【发布时间】:2022-07-07 01:12:47
【问题描述】:
对于以下查询:
SELECT some_value
FROM some_table
WHERE param_one='62627'
AND param_two='1'
AND param_three=QUESTIONABLE_VALUE
如果 QUESTIONABLE_VALUE 为 null 或整数/字符串,对性能有影响吗?
【问题讨论】:
标签: mysql
对于以下查询:
SELECT some_value
FROM some_table
WHERE param_one='62627'
AND param_two='1'
AND param_three=QUESTIONABLE_VALUE
如果 QUESTIONABLE_VALUE 为 null 或整数/字符串,对性能有影响吗?
【问题讨论】:
标签: mysql
IS NULL Optimization。 MySQL 可以对 col_name IS NULL 执行与 col_name = constant_value 相同的优化。例如,MySQL 可以使用索引和范围来搜索具有 IS NULL 的 NULL。
你必须有一个复合索引
`idx` (`param_one`,`param_two`,`param_three`)
使用EXPLAIN 检查优化器在不同数据类型上的表现
【讨论】:
如果您有一个可能为 null 或非 null 的参数,并且您想匹配相同的数据,您将使用 <=> 运算符(null-safe 比较)。
SELECT some_value
FROM some_table
WHERE param_one='62627'
AND param_two='1'
AND param_three <=> QUESTIONABLE_VALUE
对于=,如果任一操作数为空,则结果将为空。
【讨论】: