使用有点奇怪的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查询性能的主要内容,如果未能解决你的问题,请参考以下文章