使用重复WHERE子句时是否出现问题、问题或性能问题?
示例SQL代码:
SELECT * FROM `table`
WHERE `field` = 1
AND `field` = 1
AND `field2` = 22
AND `field2` = 22
优化器是否消除重复项?
发布于 2014-01-07 02:57:33
WHERE
子句的工作方式类似于任何编程语言中的if条件。此子句用于将给定值与MySQL表中可用的字段值进行比较。
如果来自外部的给定值等于MySQL表中的可用字段值,那么它将返回该行。
您不会因为有重复的条件而面临任何问题或问题,但是在更大的范围内,这可能会略微降低性能。
编辑:
您可以发出一个EXPLAIN
语句,它告诉MySQL在不实际执行SELECT
查询的情况下显示一些关于如何执行SELECT
查询的信息。这样,您就可以确切地看到将要执行的是什么。要使用EXPLAIN
,只需将单词EXPLAIN
放在SELECT
语句的前面:
mysql> EXPLAIN SELECT * FROM table WHERE 0\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: NULL
type: NULL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: NULL
Extra: Impossible WHERE
通常,EXPLAIN会返回更多的信息,包括将用于扫描表的索引的非空信息、将要使用的联接类型以及需要从每个表中检查的行数的估计数。
https://stackoverflow.com/questions/20963062
复制相似问题