SQL:喜欢v。等于性能比较

时间:2017-11-03 17:11:11

标签: sql sql-server sqlperformance

我有一个大表(1亿行),它在传统的RDBMS系统(Oracle,MySQL,Postgres,SQL Server等)中正确编制索引。我想执行一个SELECT查询,该查询可以使用以下任一条件制定:

可以用单一标准表示的一个:

LIKE "T40%" 

仅查找由于通配符

而在字符串字段开头的匹配项

需要200个确切标准的列表:

WHERE IN("T40.x21","T40.x32","T40.x43")

所有其他条件相同。我应该期望哪个性能更高?

2 个答案:

答案 0 :(得分:1)

假设两个查询都返回相同的行集(即您在IN表达式中提供的项目列表是详尽的),您应该期望几乎相同的性能,可能对{{1}有一些优势} query。

  • RDBMS引擎一直在使用索引搜索来查找LIKE个查询,因此LIKE将在索引搜索后生成记录
  • 您的LIKE 'T40%'查询也会针对索引搜索进行优化,也许会使RDBMS的下限和上限更紧密。但是,会有一个额外的过滤步骤来消除IN列表之外的记录,这会浪费CPU周期,前提是所有行都会被返回。

如果您对查询进行参数化,则第二个查询变得更难从主机程序传递给RDBMS。在所有其他条件相同的情况下,我会使用IN

答案 1 :(得分:-1)

我建议使用LIKE运算符,因为ESCAPE OPTION必须与' \'一起使用。符号增加字符串的精确匹配。