在数据库中,我经常听到“选择性查询”! 您如何称呼“选择性查询”?
是通过查询非常大的表返回非常小的结果集的查询吗? 就像
SELECT *
FROM dbo.PurchaseOrder
WHERE PurchaseDate = '1/1/2018'
就像从大山上抓一块小石头。
还是查询选择了那么多列而不管返回的行数是多少? 喜欢,
SELECT col1,
...,
col30
FROM dbo.SomeWideTable
请帮助我理解术语,并在可能的情况下举例说明。谢谢。
答案 0 :(得分:3)
“选择性”查询是指相对于表中的行数选择几行的查询。
通常,索引对此类查询很有用,因为它减少了需要读取的数据页的数量。
我不知道它是指查询中引用的列数,尽管可能有人为此目的使用它。
答案 1 :(得分:0)
如果db可以通过测试少量的行来获取行,则查询是选择性的。
在很多情况下,DB都可以忽略表的大部分内容,但是最有可能是因为有合适的索引。谓词(在何处/具有)的一部分的列必须是索引的一部分。我们使用索引友好的条件(例如相等)。等等
如果查询不是选择性的,则db必须扫描更多行-> IO较多->读取速度较慢,并且某些写入可能会延迟,因为在这些读取期间表可能被锁定。
获取的数据量无关紧要。谓词中未使用的列也可能不包含在索引中,然后db使用索引作为指向该表的指针,并且仍然只读取相同数量的数据(结果中每行仅读取一次)。