首页 > 某种特定查询条件下的MYSQL效率问题

某种特定查询条件下的MYSQL效率问题

SELECT count(*) FROM 表1,表2 WHERE 表1.type='text' AND 表1.tid=表2.id AND 表2.user='b';

我在表1里建立了索引tid和type,但这句话的效率依然极烂,大约要执行2秒以上。

请问这种查询条件下,我该如何建立索引(或者改写语句)才能让查询效率高起来

Explain的结果如下

1    SIMPLE    表1    ALL    tid,type    NULL    NULL    NULL    114299    Using where
1    SIMPLE    表2    eq_ref    PRIMARY    PRIMARY    4    user.表1.tid    1    Using where

explain //你的SQL语句
就可以分析性能。上面的太过于笼统了。因为系统都不知道。。。
和join没太大的关系吧。反正基本都是笛卡尔积。left.right.都不会对性能有多大影响。


表2.user这个字段也要建立索引,否则对表1的tid和type建立索引也不会有太大提高


我觉得使用JOIN ... ON语法查询效率会有所提升,按你的实际情况可用LEFT JOINRIGHT JOIN
你可以试试

SELECT count(*) FROM t1
INNER JOIN t2
ON t1.tid=t2.id
WHERE t1.type='text'
    AND t2.user='b';

FROM t1, t2 这种是ANSI SQL-89的旧语法


数据条数越多 count 效率越低下, 好像没什么好办法, 所以所有的计数都应该单独记录.

【热门文章】
【热门文章】