2012-06-21 3 views
0

Есть ли разница между следующими двумя утверждениями:разница между IFNULL и IF

mysql> EXPLAIN SELECT IF(arms IS NULL, 'asdf', arms) FROM limbs; 
+----+-------------+-------+------+---------------+------+---------+------+------+-------+ 
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | 
+----+-------------+-------+------+---------------+------+---------+------+------+-------+ 
| 1 | SIMPLE  | limbs | ALL | NULL   | NULL | NULL | NULL | 12 |  | 
+----+-------------+-------+------+---------------+------+---------+------+------+-------+ 
1 row in set (0.00 sec) 

mysql> EXPLAIN SELECT IF(arms IS NULL, 'asdf', arms) FROM limbs; 
+----+-------------+-------+------+---------------+------+---------+------+------+-------+ 
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | 
+----+-------------+-------+------+---------------+------+---------+------+------+-------+ 
| 1 | SIMPLE  | limbs | ALL | NULL   | NULL | NULL | NULL | 12 |  | 
+----+-------------+-------+------+---------------+------+---------+------+------+-------+ 
1 row in set (0.00 sec) 

ли выполнить один лучше или предпочтительнее, чем другие? Или они идентичны?

+2

Ваши два заявления _literally_ то же самое. Между ними нет никакой разницы. – lanzz

+0

'EXPLAIN' не зависит от' SELECT' (пока у вас нет вложенных запросов) – zerkms

ответ

1

IFNULL всего лишь syntactic sugar для IF, который является синтаксическим сахаром для ANSI SQL CASE.

Так используйте то, что вам больше нравится и в зависимости от ваших конкретных потребностей.

PS: EXPLAIN не полагается на SELECT

Смежные вопросы