我正在尝试加速数据库应用程序,我目前正在寻找对应用程序影响较小的简单方法。
我想知道搜索一个String是否符合条件的最有效方法。使用第一个选项是否有任何正当理由。
所以说有一个字段调用状态,它只会将值存储为Discontinued。
答案 0 :(得分:3)
没有理由使用NOT LIKE
。无论您使用不平等运算符的!=
还是<>
形式,都只是个人偏好问题。
答案 1 :(得分:1)
出于讨论的目的,我假设STATUS字段可以为空,因此将包含两个值“Discontinued”或NULL。如果是这种情况,上述任何查询都不会产生预期结果。当NULL与任何东西进行比较时,它返回NULL而不是TRUE或FALSE,因此当谓词为STATUS <> 'Discontinued'
或其他时,将不返回STATUS为NULL的行。为了得到结果,我认为你期望你不得不说STATUS IS NULL
。
分享并享受。
答案 2 :(得分:0)
我会投票给第二个。第一个将强制进行TABLE SCAN。
同时写两个,EXPLAIN PLAN,然后看看。
答案 3 :(得分:0)
保存单个值或null的列不太可能对您针对该表运行的任何查询的性能产生任何影响,尤其是在您搜索不等于那个值。
因此,无论该列是否已编入索引,任何这些选项都将表现得同样出色。但是,作为意图的表达 - 对于您的开发人员和数据库优化器 - 最好将其编码为:
status is null