查询A和查询B之间是否存在任何性能差异?
查询A
SELECT * FROM SomeTable
WHERE 1 = 1 AND (SomeField LIKE '[1,m][6,e][n]%')
查询B
SELECT * FROM SomeTable
WHERE 1 = 1 AND (SomeField IN ('16', 'Mens'))
答案 0 :(得分:5)
第一个可能要慢得多。索引不能与LIKE
一起使用,除非有一个常量前缀,例如LIKE 'foo%'
。因此,第一个查询将需要表扫描。但是,第二个查询可以使用SomeField
上的索引(如果有的话)。
第一个查询也会给出错误的结果,因为它匹配'1en'。