我有一个相对简单的查询,我试图在桌子上运行:
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万亿条支票。
如何编写此查询以便它不会进行如此多的检查?
答案 0 :(得分:0)
它主要是桌面设计问题。 检查question_id和app_name是否已编入索引
请记住:您拥有的索引列越少,您的效果就越好 索引存储在指向数据库中完整条目的额外哈希表中
那就是说:如果你索引了question_id和app_name,你的查询会在某种单独的表中搜索,而不必阅读包含所有列的完整表
关于如何正确索引表的一个非常有用的来源是:http://use-the-index-luke.com/welcome