当前位置: 首页 > 面试题库 >

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

南门新荣
2023-03-14
问题内容

更新:

只是在更明显的地方提到它。当我将IN更改为=时,查询执行时间从180缩短为0.00008秒。速度差可笑。

此SQL查询需要180秒才能完成!那怎么可能?有没有一种方法可以优化它更快?

SELECT IdLawVersionValidFrom 
FROM question_law_version 
WHERE IdQuestionLawVersion IN 
  (
  SELECT MAX(IdQuestionLawVersion) 
  FROM question_law_version 
  WHERE IdQuestionLaw IN 
    (
    SELECT MIN(IdQuestionLaw) 
    FROM question_law 
    WHERE IdQuestion=236 AND IdQuestionLaw>63
    )
  )

每个表中只有大约5000行,因此它应该不会太慢。


问题答案:

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

如果将更改为,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



 类似资料:
  • 我现在在大学学习数据库,在我的项目中,我有3个表:、和 联赛(leagueId,leagueName) 团队(teamId,teamName) 具有(leagueId,teamId,year)

  • 问题内容: 我有一个以datetime为参数的查询,我们观察到的是,如果通过变量提供datetime参数,则执行查询的时间比直接对参数进行硬编码要多2 -3倍,是否有任何原因或解决方案?对此 以下查询大约需要5分钟才能返回结果 虽然作为 它会在10到20秒内返回 我并不总是希望在列上使用索引进行搜索。 按照kevchadders的建议,我看到执行计划有很大的不同。使用日期变量的查询正在执行聚集索引

  • 而我用AndroidStudio2.3来调试,有什么问题吗?更重要的是,我的AndroidManifest是这样的。

  • 问题内容: 我有一个HTML5视频播放器: 这似乎在开发人员中100%有效,但是在生产视频中,加载视频可能需要90秒的时间。我想弄清楚html5播放器是否真的是流式播放器,或者它首先需要完整下载吗?一位同事通知我,设置标签的方法如下: 如果preload选项为none或元数据,则应强制浏览器流式传输视频,而不是缓冲整个内容。我在这里有什么选择?我应该放弃html5播放器吗?我的印象是html5播放

  • 问题内容: 我有一个 Odata 查询: /ecommerceadmin/ODataService.svc/search?$select=status &$filter=id eq'test.com‘和名称eq’abc’ 如何在elasticsearch中实现代码以相应地获取数据。应使用 SearchSourceBuilder 中的 哪种 方法? 问题答案: 您可以轻松地摆脱一个和一个这样的查询:

  • 问题内容: 我想从数据库中删除某些项目。我有以下查询: 这有效,并返回2个结果。 现在,我想将此查询转换为查询。但是,以下操作无效: MySQL引发以下错误: 1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ WHERE entry.sheetID = sheets.id ANDsheets.clientID = 13”附近使用 我在这里做错