0

我有一个名为 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 多列

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

4

3 回答 3

3

建立索引(org_id, link)

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

将 LINK_ID 放在首位可能是阻碍您查询的原因。

create index LinksByOrgAndLink on Links ( Org_ID, Link );

MySQL 创建索引语法

于 2013-01-16T12:15:55.360 回答
1

问题出在你的 DISTINCT.* GROUP BY 已经在做的工作DISTINCT,所以做不同的两次,一个SELECT DISTINCT 和另一个GROUP BY

尝试这个

    SELECT  * 
    FROM `links` 
    WHERE org_id` = 2 AND (link !="") 
    GROUP BY link
于 2013-01-16T12:22:31.777 回答
0

我想在你的“链接”列中添加一个索引会改善结果。 http://dev.mysql.com/doc/refman/5.0/en/create-index.html

只选择您需要的列。

为什么.* 有一个不同的links?你的表中是否有一些行正好翻了一番?

另一方面,将值“”更改为 NULL 可能会改进您的选择语句,但我不确定这一点。

于 2013-01-16T12:22:29.603 回答