使用有点奇怪的where子句的sql查询性能

Posted

技术标签:

【中文标题】使用有点奇怪的where子句的sql查询性能【英文标题】:sql query performance using somewhat strange where clause 【发布时间】:2009-01-13 08:05:51 【问题描述】:

我有一个有趣的问题要问你,那里的 sql 专家(或者可能在这里?)。

当我需要在运行时构建查询时,我养成了这个习惯。为了避免多次'if'检查,我只是去写'where true'。然后其余部分是形式中的子句的另一部分,当然是 'and true ...' 并继续进行有用的过滤。

我的问题是:那些“真假”会影响查询性能吗? 对,最好的答案是进行一些测试,但是根据您的经验,您对这种方法有什么想说的吗?

对了,我特别感兴趣的sql引擎是mysql

【问题讨论】:

你能给我们一个生成的实际查询的例子吗? 同意,能够查看示例查询可能会有所帮助 【参考方案1】:

我们有 sql-server,但是对于这种“不编程 ifs”(如果时间不多的话)我们使用 1=1 作为表达式,并且没有我们可以测量的性能影响。

【讨论】:

【参考方案2】:

我认为 MySQL 查询优化器摆脱了 where true and true 的东西。

【讨论】:

【参考方案3】:

不应该。我在 SQL Server 中做过很多次,它对执行计划没有影响。但是,我不会将其留在生产代码中。

【讨论】:

以上是关于使用有点奇怪的where子句的sql查询性能的主要内容,如果未能解决你的问题,请参考以下文章

WHERE 子句中的 OR 会降低 sql 查询性能(sql server)

sql server查询性能where子句

优化where子句中的SQL子查询

SSIS 查找行为很奇怪

将 SQL 查询与不同的 where 子句组合

SQL - 使用常量值与参数的任何性能差异?