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

我的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多列

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

+2

在SELECT之前添加'EXPLAIN'来查看发生了什么,以及为什么它很慢。 –

建立在(org_id, link)

org_id索引来优化您的WHERE条款,并link为您group by(并且还where一部分)。

通过让LINK_ID处于第一个位置可能是什么阻止了您的查询。

create index LinksByOrgAndLink on Links (Org_ID, Link); 

MySQL Create Index syntax

+0

对不起,我误以为它不是link_id。它是现场链接。 – Ranzit

+0

你能告诉我如何添加“构建索引(org_id,链接)” – Ranzit

+0

你的意思是多列索引? – Ranzit

我猜增加一个索引你的“链接”栏将改善的结果。 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