利用mysql join中的索引

时间:2017-10-30 17:01:28

标签: mysql join indexing query-optimization

我有一个MySQL表T,并且列c1上有一个索引。我的连接查询如下。

select something from T as t1 inner join T as t2 on ABS(t1.c1-t2.c1)<2;

我使用explain来查看MySQL是否使用索引。它没有使用索引进行上述查询。但它确实使用索引进行以下查询。

select something from T as t1 inner join T as t2 on t1.c1=t2.c1;

那么如何让MySQL在第一个查询中使用索引呢?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要删除围绕t2.c1列的函数调用才能使用该列上的索引。

这样的查询对您有用:

SELECT something
FROM T AS t1
INNER JOIN T AS t2 ON t2.c1 > (t1.c1 - 2) and t2.c1 < (t1.c1 + 2);

注意:这假设您在c1列上有索引。