您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

此SELECT查询需要180秒才能完成

此SELECT查询需要180秒才能完成

(发布我的评论作为答案,显然确实有所作为!)

如果将更改为,IN=什么区别?

如果有人想进一步调查,我刚刚进行了测试,发现它很容易复制。

建立表格

CREATE TABLE `filler` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
)

建立程序

CREATE PROCEDURE `prc_filler`(cnt INT)
BEGIN
        DECLARE _cnt INT;
        SET _cnt = 1;
        WHILE _cnt <= cnt DO
                INSERT
                INTO    filler
                SELECT  _cnt;
                SET _cnt = _cnt + 1;
        END WHILE;
END

填充表

  call prc_filler(5000)

查询1

SELECT id 
FROM filler 
WHERE id =  (SELECT MAX(id) FROM filler  WHERE id =   
 ( SELECT MIN(id) 
    FROM filler
    WHERE id between 2000 and 3000
    )
  )

等于说明输出http://img689.imageshack.us/img689/5592/equals.png

查询2(相同的问题)

SELECT id 
FROM filler 
WHERE id in  (SELECT MAX(id) FROM filler  WHERE id in   
 ( SELECT MIN(id) 
    FROM filler
    WHERE id between 2000 and 3000
    )
  )

在说明输出中http://img291.imageshack.us/img291/8129/52037513.png

其他 2022/1/1 18:17:35 有548人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶