Bas*_*ase 6 sql-server string-searching
我想匹配WHERE
子句中字符串的开头。虽然我认识到数据库性能通常取决于底层数据结构,但是否有最佳实践来做到这一点?是否有一种选择总是优于其他选择?
我想避免,LIKE
因为我认为它的效率低于LEFT
or CHARINDEX
。据我所知,我的选择如下。欢迎其他建议:
DECLARE @MyField as varchar(10)
SET @MyField = 'HELLOWORLD'
SELECT 1 WHERE @MyField LIKE 'HELLO%'
SELECT 2 WHERE LEFT(@MyField, 5) = 'HELLO'
SELECT 3 WHERE CHARINDEX('HELLO', @MyField) = 1
Run Code Online (Sandbox Code Playgroud)
我能想到的最大的因素是,LEFT(MyField,5)
与CHARINDEX('HELLO',@MyField)
除非索引表达式完全匹配将不会使用索引。
但是MyField LIKE 'HELLO%'
将使用其中的任何索引MyField
。
归档时间: |
|
查看次数: |
20531 次 |
最近记录: |