栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用MySQL或SQL进行的BETWEEN和IN之间的性能差异一般吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用MySQL或SQL进行的BETWEEN和IN之间的性能差异一般吗?

BETWEEN
超越
IN
在此情况下(但 这样做 的措施,并检查执行计划,也!),尤其是
n
成长和统计数据仍然准确。假设:

  • m
    你桌子的大小是多少
  • n
    你的范围是多少

可以使用索引(
n
相比微小
m

  • 从理论上讲,

    BETWEEN
    可以通过对主键索引进行一次“范围扫描”(Oracle讲)来实现,然后遍历大多数
    n
    索引叶节点。复杂度将是
    O(n + log m)

  • IN
    通常
    n
    以对主键索引的一系列“范围扫描” (循环)的形式实现。随着
    m
    表的大小,复杂度将始终
    O(n * log m)
    … …总是更糟(对于很小的表
    m
    或很小的范围可忽略
    n

索引无法使用(
n
占的重要部分
m

无论如何,您将获得全表扫描并评估每一行的谓词:

  • BETWEEN
    需要评估两个谓词:一个谓词下限,一个谓词上限。复杂度是
    O(m)

  • IN
    需要最多评估
    n
    谓词。复杂性是
    O(m * n)
    ……这总是会变得更糟,或者
    O(m)
    如果数据库可以将
    IN
    列表优化为哈希图,而不是谓词列表,则可能更糟。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416690.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号