sql-server - 如何为我的 first_name 列设置不等式 SARGable?
问题描述
我有以下查询:
select * from [sales].[customers] where first_name <> 'Debra'
我想让我的查询 SARGable 因为我有一个非聚集索引first_name
:
解决方案
它已经是sargable了。
SQL Server 可以将其转换为两个范围搜索> 'Debra'
,< 'Debra'
如果它认为它是有益的。
CREATE TABLE #Customers(
CustomerID INT PRIMARY KEY,
first_name VARCHAR(10) INDEX ix_first_name,
last_name VARCHAR(100)
)
SELECT first_name
FROM #Customers
where first_name <> 'Debra'
DROP TABLE #Customers
除非您有一个带有前导列的覆盖索引,否则first_name
这不太可能是有益的,尽管可能只有一小部分表将被排除在外,并且如果 SQL Server 预计它需要进行高比例的查找,则它不会使用索引查找.
推荐阅读
- google-sheets - 根据另一个单元格中的信息修改 Google Sheet Cell 中的信息
- python - 如何解决 content.Keywords.key_words: (fields.E005) 'choices' 必须是包含(实际值,人类可读名称)元组的可迭代
- hadoop - 在分布式hadoop生态系统中启动hbase后,系统被挂起,不得不重新启动以稳定机器
- java - DateTimeFormatter.ofPattern 语言选项
- hadoop - 在 ec2 实例上运行 MissingPokerCards 时出现 ClassNotFoundException
- python - 超过字符数时值更改
- haskell - 当后一位数字大于haskell中的前一位数字时中断
- python - 使用来自 db 的计数用于使用 pandas 的 matplotlib 条形图?
- r - 来自ggimage的geom_image任意选择纵横比
- firebase - 在 DataTable 中显示带有颤动的 Firestore 数据