gpt4 book ai didi

mysql - 在 where 子句中使用多个条件的缺点

转载 作者:行者123 更新时间:2023-11-29 06:17:12 27 4
gpt4 key购买 nike

众所周知,sql查询的where子句在select子句之前执行。并且我们在where子句中加入了一些条件来根据我们的要求过滤出结果。

在编写一些查询时,我在脑海中遇到了一个问题,即在 where 子句中使用多个条件是否有任何缺点,以及它们以什么顺序应用于从所选表中过滤结果。

例如:我们有一张 table

    Building(name,height,owner,builder_name,age)

我们有一个查询:

    select * from Building
where height between X and Y and age between A and B

现在,这个查询将如何执行。那么条件的顺序呢,即

X<=height<=Y and A<=age<=B

会不会是这样的,首先将在整个记录中搜索给定范围内的高度,然后对年龄做同样的事情。 ???

最佳答案

数据库服务器有多个选项来解决该查询。它将选择服务器“认为”更快的选项。

我看到的选项是:

  • 扫描全表,过滤掉不满足where子句的行
  • height 列的索引上寻找一个 height 范围,然后使用 A 和 B 之间的年龄 谓词过滤掉行。
  • age 列的索引上寻找一个 age 范围,然后使用 height between X and Y 谓词过滤掉行
  • 寻找两个索引,然后执行索引交集

数据库服务器并不总是使用可能适用的索引,它在使用之前会考虑一些事情,例如:

  • 索引选择性。
  • 索引覆盖率。

更有可能使用高选择性索引。可能使用覆盖索引。

关于mysql - 在 where 子句中使用多个条件的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35198769/

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