我在MySQL (5.5.31)中有一个表,它有大约20M行。以下查询:
SELECT DISTINCT mytable.name name FROM mytable
LEFT JOIN mytable_c ON mytable_c.id_c = mytable.id
WHERE mytable.deleted = 0 ORDER BY mytable.date_modified DESC LIMIT 0,21
正在导致全表扫描,并解释说type是ALL,而额外信息是Using where; Using temporary; Using filesort。解释结果:
id sele
我在mysql (InnoDB)的WHERE in子句中有一个长列表(> 2000个I)的查询:
SELECT id
FROM table
WHERE user_id IN ('list of >2000 ids')
我试图通过使用内部连接来优化这一点,而不是像这样( ids和user_id都使用索引):
SELECT table.id
FROM table
INNER JOIN users ON table.user_id = users.id WHERE users.type = 1
然而,令人惊讶的是,第一个查询的速度要快得多(快5到6倍)。为什么会这