Heim > Datenbank > MySQL-Tutorial > Hauptteil

Überprüfen Sie key_len in der Erklärung, um festzustellen, welcher Index verwendet wird

藏色散人
Freigeben: 2020-03-30 08:51:37
nach vorne
1987 Leute haben es durchsucht

Überprüfen Sie key_len in der Erklärung, um festzustellen, welcher Index verwendet wird.

Eine Tabelle enthält mehrere Indizes. Welchen Indexwert sollten wir also verwenden?

MySQL-Video-Tutorial

Wir können EXPLAIN verwenden, um es anzuzeigen, und das Feld key_len ist sichtbar

Zum Beispiel das folgende SQL

explain select * from ent_calendar_diary where email='xxxx' and diary_id=1784;
 
+----+-------------+--------------------+------------+-------+-------------------------+---------+---------+-------+------+----------+-------+
| id | select_type | table              | partitions | type  | possible_keys           | key     | key_len | ref   | rows | filtered | Extra |
+----+-------------+--------------------+------------+-------+-------------------------+---------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | ent_calendar_diary | NULL       | const | PRIMARY,idx_email_stime | PRIMARY | 4       | const |    1 |   100.00 | NULL  |
+----+-------------+--------------------+------------+-------+-------------------------+---------+---------+-------+------+----------+-------+
Nach dem Login kopieren

Es gibt zwei Indexfelder in „possible_keys“, aber „key_len“ ist 4 Bytes

Überprüfen Sie key_len in der Erklärung, um festzustellen, welcher Index verwendet wirdHinweis: „key_len“ gibt nur die ausgewählte Indexspalte an WHERE für bedingte Filterung enthält nicht den Typ ORDER BY/GROUP BY

int und nicht null ist 4 Bytes, daher verwendet die obige SQL den Primärschlüsselindex

explain select * from ent_calendar_diary where email='xxxx';
+----+-------------+--------------------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+
| id | select_type | table              | partitions | type | possible_keys   | key             | key_len | ref   | rows | filtered | Extra |
+----+-------------+--------------------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+
|  1 | SIMPLE      | ent_calendar_diary | NULL       | ref  | idx_email_stime | idx_email_stime | 767     | const |  111 |   100.00 | NULL  |
+----+-------------+--------------------+------------+------+-----------------+-----------------+---------+-------+------+----------+-------+
Nach dem Login kopieren

Das sind 767 Bytes, varchar(255) nicht null 255 * 3 +2 stimmt genau überein, daher wird der normale E-Mail-Index verwendet

CREATE TABLE `ent_calendar_diary` (
`diary_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`title` varchar(100) NOT NULL,
`summary` varchar(500) NOT NULL DEFAULT '',
`stime` bigint(11) NOT NULL DEFAULT '0',
`ctime` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`diary_id`),
KEY `idx_email_stime` (`email`,`stime`)
) ENGINE=InnoDB AUTO_INCREMENT=1809 DEFAULT CHARSET=utf8
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonÜberprüfen Sie key_len in der Erklärung, um festzustellen, welcher Index verwendet wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage