Ich habe unterschiedliche Verhaltensweisen bei der Ausführung einer Abfrage mit einfachen Anführungszeichen und ohne einfache Anführungszeichen beobachtet.Warum unterscheidet sich das Select-Abfrageverhalten von einfachen Anführungszeichen in where-Bedingung und ohne einfache Anführungszeichen?
Mit einfachen Anführungszeichen ('121'
) Ich habe das Ergebnis schnell und Abfrage verwendet Index gut. Aber ohne Anführungszeichen verwendet die Abfrage den Index nicht und die Antwortzeit ist hoch.
mysql> explain select * from tbl_n1 where id =121;
+----+-------------+----------------------+------+---------------+------+---------+------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------------+------+---------------+------+---------+------+--------+-------------+
| 1 | SIMPLE | tbl_n1 | ALL | n1_id | NULL | NULL | NULL | 286929 | Using where |
+----+-------------+----------------------+------+---------------+------+---------+------+--------+-------------+
1 row in set (0.00 sec)
mysql> explain select * from tbl_n1 where id ='121';
+----+-------------+----------------------+------+---------------+----------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------------+------+---------------+----------+---------+-------+------+-------------+
| 1 | SIMPLE | tbl_n1 | ref | n1_id | n1_id | 53 | const | 29 | Using where |
+----+-------------+----------------------+------+---------------+----------+---------+-------+------+-------------+
1 row in set (0.00 sec)
show create table tbl_n1\G
....
....
`id` varchar(10) DEFAULT NULL,
....
....
....
Kein Problem, werde ich diesen Kommentar und dank löschen! –