MYSQL 查询优化,比较 3 个表和数千条记录

MYSQL Query optimization, comparing 3 tables w/ thousands of records

我有这个查询:

SELECT L.sku,L.desc1,M.map,T.retail FROM listing L INNER JOIN moto M ON L.sku=M.sku INNER JOIN truck T ON L.sku=T.sku LIMIT 5;

每个 table(listing、moto、truck)有 ~300.000 行,只是为了测试目的,我设置了 5 个结果的 LIMIT,最后我需要数百个,但让我们看看.. .

该查询在控制台中需要 3:26 分钟...我无法想象 PHP 需要多少时间...我需要在那里处理它

任何 advice/solution 优化查询?谢谢!

这里推荐两件事:

  • 索引
  • 反规范化

当数据库变得庞大时,人们倾向于做的一件事是调用 非规范化。这是当您将来自多个 table 的数据存储在一个 table 中以防止需要执行 join 时。如果您的应用程序依赖于特定的读取来为其提供动力,这将非常有用。这是缩放时常用的策略。

如果 Denormalization 不可能,另一种更简单的优化此查询的方法是确保您在 [=] 的列上有 indexes 35=] join 反对。因此需要对列 L.skum.skuT.sku 进行索引,您会立即注意到性能的提高。

任何其他优化我需要更多关于数据的信息,希望对您有所帮助!