我的SQL查询非常缓慢,有50K +个记录
问题描述:
我有一个表名为链接,其中我有50000条记录,其中三个字段的索引顺序为link_id
,org_id
,data_id
。我的SQL查询非常缓慢,有50K +个记录
这里的问题是,当我使用sql查询组时,它需要更多时间来加载。
查询是这样
SELECT DISTINCT `links`.*
FROM `links`
WHERE `links`.`org_id` = 2 AND (link !="")
GROUP BY link
表是有近20多列
是否有任何解决方案,以加快查询访问速度更快。
答
建立在(org_id, link)
org_id
索引来优化您的WHERE
条款,并link
为您group by
(并且还where
一部分)。
通过让LINK_ID处于第一个位置可能是什么阻止了您的查询。
create index LinksByOrgAndLink on Links (Org_ID, Link);
答
我猜增加一个索引你的“链接”栏将改善的结果。 http://dev.mysql.com/doc/refman/5.0/en/create-index.html
只选择您需要的列。
为什么有一个独特的links
。*? 你的表格中有几行完全翻倍?
另一方面,将值“”更改为NULL可以提高您的select语句,但iam不确定这一点。
答
问题是在你的DISTINCT。* 在GROUP BY已经在做的DISTINCT
的工作,所以在做不同两次的SELECT DISTINCT
一个和其他的GROUP BY
试试这个
SELECT *
FROM `links`
WHERE org_id` = 2 AND (link !="")
GROUP BY link
在SELECT之前添加'EXPLAIN'来查看发生了什么,以及为什么它很慢。 –