我的SQL查询非常慢,有50K +记录

时间:2013-01-16 12:11:46

标签: mysql performance sqlperformance

我有一个名为links的表,其中我有50000条记录,其中三个字段的索引按link_idorg_iddata_id的顺序排列。

问题在于,当我使用group by sql查询时,它需要更多时间来加载。

查询就像这样

SELECT DISTINCT `links`.* 
FROM `links` 
WHERE `links`.`org_id` = 2 AND (link !="") 
GROUP BY link

该表有近20多列

是否有任何解决方案可以加快查询速度以便更快地访问。

3 个答案:

答案 0 :(得分:3)

(org_id, link)

上建立索引

org_id优化您的WHERE条款,link优化group by(以及where的一部分)。

将LINK_ID放在第一个位置可能就是让你的查询回来了。

create index LinksByOrgAndLink on Links ( Org_ID, Link );

MySQL Create Index syntax

答案 1 :(得分:1)

问题出在您的DISTINCT。* GROUP BY已经在完成DISTINCT的工作了,所以两次分别进行,SELECT DISTINCTGROUP 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语句,但我不确定这一点。

相关问题