Laravel 5.1 查询具有数百万条记录的数据库
Laravel 5.1 querying a database with millions of records
我有一个包含近 300 万条记录的产品数据库。我正在编写一个网络服务来查询数据库。输出将分配给客户端中的一个数组以进行字符串匹配(类似于您在 google 的搜索框中开始键入 ipod 的体验)。有关如何优化查询或以仅在产品刷新时创建新缓存的方式缓存查询的任何建议。产品数据库每周都会更新新产品,这意味着记录的数量会随着时间的推移而增加。
如果您需要在字符串的任何部分(LIKE '%string%' 查询)中按产品描述进行搜索,我建议将唯一描述存储在另一个 table 中,并使用全文索引,每周更新一次(如果需要的话)。因此,当用户开始输入时,我们使用此 table 来输出建议。
当用户点击一个描述时,我们会在产品 table 中搜索此描述 -> 因此我们需要在产品 table 的描述列中添加索引。
如果您只需要通过起始短语匹配(LIKE 'string%' 查询),您可以简单地将 INDEX 放在产品的描述列中 table.
我有一个包含近 300 万条记录的产品数据库。我正在编写一个网络服务来查询数据库。输出将分配给客户端中的一个数组以进行字符串匹配(类似于您在 google 的搜索框中开始键入 ipod 的体验)。有关如何优化查询或以仅在产品刷新时创建新缓存的方式缓存查询的任何建议。产品数据库每周都会更新新产品,这意味着记录的数量会随着时间的推移而增加。
如果您需要在字符串的任何部分(LIKE '%string%' 查询)中按产品描述进行搜索,我建议将唯一描述存储在另一个 table 中,并使用全文索引,每周更新一次(如果需要的话)。因此,当用户开始输入时,我们使用此 table 来输出建议。
当用户点击一个描述时,我们会在产品 table 中搜索此描述 -> 因此我们需要在产品 table 的描述列中添加索引。
如果您只需要通过起始短语匹配(LIKE 'string%' 查询),您可以简单地将 INDEX 放在产品的描述列中 table.