加快自己加入sql查询

时间:2014-11-03 23:07:49

标签: mysql sql query-optimization

我有一个相对简单的查询,我试图在桌子上运行:

select distinct(a.question_id || a.app_name) 
from quick_stats a
join quick_stats b on a.question_id = b.question_id 
                  and a.app_name != b.app_name;

不幸的是,查询需要很长时间才能运行。

我认为这是因为表格中有大约400万条记录,因为它必须根据表格中的每一条记录检查每条记录,这意味着有16万亿条支票。

如何编写此查询以便它不会进行如此多的检查?

1 个答案:

答案 0 :(得分:0)

它主要是桌面设计问题。 检查question_id和app_name是否已编入索引

请记住:您拥有的索引列越少,您的效果就越好 索引存储在指向数据库中完整条目的额外哈希表中

那就是说:如果你索引了question_id和app_name,你的查询会在某种单独的表中搜索,而不必阅读包含所有列的完整表

关于如何正确索引表的一个非常有用的来源是:http://use-the-index-luke.com/welcome