我有一个名为links的表,其中我有50000条记录,其中三个字段的索引按link_id
,org_id
,data_id
的顺序排列。
问题在于,当我使用group by sql查询时,它需要更多时间来加载。
查询就像这样
SELECT DISTINCT `links`.*
FROM `links`
WHERE `links`.`org_id` = 2 AND (link !="")
GROUP BY link
该表有近20多列
是否有任何解决方案可以加快查询速度以便更快地访问。
答案 0 :(得分:3)
在(org_id, link)
org_id
优化您的WHERE
条款,link
优化group by
(以及where
的一部分)。
将LINK_ID放在第一个位置可能就是让你的查询回来了。
create index LinksByOrgAndLink on Links ( Org_ID, Link );
答案 1 :(得分:1)
问题出在您的DISTINCT。*
GROUP BY已经在完成DISTINCT
的工作了,所以两次分别进行,SELECT DISTINCT
和GROUP BY
的其他工作
试试这个
SELECT *
FROM `links`
WHERE org_id` = 2 AND (link !="")
GROUP BY link
答案 2 :(得分:0)
我想在“链接”列中添加索引可以改善结果。 http://dev.mysql.com/doc/refman/5.0/en/create-index.html
仅选择您需要的列。
为什么links
。*有明显区别?
你的桌子上有一些确实加倍的行吗?
另一方面,将值“”更改为NULL可能会改善您的select语句,但我不确定这一点。