什么是“选择性查询”

时间:2019-07-29 12:51:41

标签: sql sql-server database

在数据库中,我经常听到“选择性查询”! 您如何称呼“选择性查询”?

是通过查询非常大的表返回非常小的结果集的查询吗? 就像

SELECT * 
  FROM dbo.PurchaseOrder 
 WHERE PurchaseDate = '1/1/2018' 

就像从大山上抓一块小石头。

还是查询选择了那么多列而不管返回的行数是多少? 喜欢,

SELECT col1, 
        ...,
       col30 
  FROM dbo.SomeWideTable

请帮助我理解术语,并在可能的情况下举例说明。谢谢。

2 个答案:

答案 0 :(得分:3)

“选择性”查询是指相对于表中的行数选择几行的查询。

通常,索引对此类查询很有用,因为它减少了需要读取的数据页的数量。

我不知道它是指查询中引用的列数,尽管可能有人为此目的使用它。

答案 1 :(得分:0)

如果db可以通过测试少量的行来获取行,则查询是选择性的。

在很多情况下,DB都可以忽略表的大部分内容,但是最有可能是因为有合适的索引。谓词(在何处/具有)的一部分的列必须是索引的一部分。我们使用索引友好的条件(例如相等)。等等

如果查询不是选择性的,则db必须扫描更多行-> IO较多->读取速度较慢,并且某些写入可能会延迟,因为在这些读取期间表可能被锁定。

获取的数据量无关紧要。谓词中未使用的列也可能不包含在索引中,然后db使用索引作为指向该表的指针,并且仍然只读取相同数量的数据(结果中每行仅读取一次)。