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



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

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

LIKE "T40%" 

由于通配符,它仅在字符串字段的开头查找匹配项

一个需要列出200个确切标准

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

等。

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

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

  • RDBMS 引擎一直在使用索引搜索进行 begins-with LIKE 查询,因此LIKE 'T40%'将在索引搜索后生成记录
  • 您的IN查询也将针对索引搜索进行优化,可能会为 RDBMS 提供更严格的下限和上限。但是,将有一个额外的筛选步骤来消除IN列表之外的记录,在假设无论如何都会返回所有行的情况下,这是对 CPU 周期的浪费。

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

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

相关内容

  • 没有找到相关文章

最新更新