检查问题此SELECT查询需要180秒才能完成(检查问题本身的注释).
IN只能与一个值进行比较,但时差仍然很大.
为什么会那样?
我想知道哪些更快(性能方面)查询(在MySQL 5.x CentOS 5.x上,如果这很重要):
SELECT * FROM table_name WHERE id=1;
SELECT * FROM table_name WHERE id=2;
.
.
.
SELECT * FROM table_name WHERE id=50;
Run Code Online (Sandbox Code Playgroud)
要么...
SELECT * FROM table_name WHERE id IN (1,2,...,50);
Run Code Online (Sandbox Code Playgroud)
我有大约50 id秒来查询.我知道通常数据库连接很昂贵,但我已经看到这个IN条款不是那么快[有时].
鉴于以下两个问题:
查询#1
SELECT log.id
FROM log
WHERE user_id IN
(188858, 188886, 189854, 203623, 204072)
and type in (14, 15, 17)
ORDER BY log.id DESC
LIMIT 25 OFFSET 0;
Run Code Online (Sandbox Code Playgroud)
查询#2 - 4个ID而不是5
SELECT log.id
FROM log
WHERE user_id IN
(188858, 188886, 189854, 203623)
and type in (14, 15, 17)
ORDER BY log.id DESC
LIMIT 25 OFFSET 0;
Run Code Online (Sandbox Code Playgroud)
解释计划
-- Query #1
1 SIMPLE log range idx_user_id_and_log_id idx_user_id_and_log_id 4 41280 Using index condition; Using where; Using filesort
-- Query #2
1 SIMPLE …Run Code Online (Sandbox Code Playgroud)