gpt4 book ai didi

SQL:BETWEEN 和 IN(更快)

转载 作者:行者123 更新时间:2023-12-04 16:36:59 40 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




11 年前关闭。




Possible Duplicate:
Is there a performance difference between BETWEEN and IN with MySQL or in SQL in general?



如果我有以下 ID:

1、2、3、4、5、6

删除时使用 IN 还是 between 子句更好?

最佳答案

  • 如果您的 ID 总是连续的,您应该使用 BETWEEN .
  • 如果您的 ID 可能是或可能不是连续的,请使用 IN .

  • 性能不应该是这里的决定因素。话虽如此,在我测试过的所有示例中,BETWEEN 似乎都更快。例如:

    没有索引,检查一百万行的表,其中每一行都有 x = 1:

    SELECT COUNT(*) FROM table1 WHERE x IN (1, 2, 3, 4, 5, 6);
    耗时:0.55s

    SELECT COUNT(*) FROM table1 WHERE x BETWEEN 1 AND 6;
    耗时:0.54s

    在没有索引的情况下,检查包含一百万行的表,其中 x 具有唯一值:

    SELECT COUNT(*) FROM table1 WHERE x IN (1, 2, 3, 4, 5, 6);
    耗时:0.65s

    SELECT COUNT(*) FROM table1 WHERE x BETWEEN 1 AND 6;
    耗时:0.36s

    一个更现实的例子是 id 列是唯一的并且有索引。当您这样做时,两个查询的性能都接近于即时。

    SELECT COUNT(*) FROM table2 WHERE x IN (1, 2, 3, 4, 5, 6);
    耗时:0.00s

    SELECT COUNT(*) FROM table2 WHERE x BETWEEN 1 AND 6;
    耗时:0.00s

    所以我会说专注于编写清晰的 SQL 语句,而不是担心执行速度的细微差别。并确保表被正确索引,因为这将产生最大的不同。

    注意:测试是在 SQL Server Express 2008 R2 上执行的。结果在其他系统上可能会有所不同。

    关于SQL:BETWEEN 和 IN(更快),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364259/

    40 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com