MySQL-Datenbank – SQL-optimierter Index

1. Vorbereitung – Personentabelle erstellen

-- ----------------------------
-- 创建Person表
-- ----------------------------
DROP TABLE IF EXISTS person;
CREATE TABLE person  (
  PID int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
  PNAME varchar(50)  NOT NULL COMMENT '姓名',
  PSEX varchar(10) NULL DEFAULT NULL COMMENT '性别',
	PAGE	int(11)  NOT NULL COMMENT '年龄',
  SAL decimal(7, 2) NULL DEFAULT NULL COMMENT '工资',
  PRIMARY KEY (PID)
) ENGINE = InnoDB AUTO_INCREMENT = 7001 CHARACTER SET = utf8mb4 COMMENT = '人员表';

2. Erstellen Sie einen Index

Syntax:
CREATE INDEX Indexname für Tabellenname (Spaltenname);

Erstellen Sie einen Index für den pname der Personentabelle:

CREATE INDEX INDEX_PERSON_PNAME ON PERSON(PNAME);

Prüfen Sie, ob die SQL-Anweisung einen Index verwendet

EXPLAIN select * from person where pname= 'Jack';

f31b21b4d57f4429afd81825ae7d3e20.png 

3. Beim Erstellen eines Primärschlüssels für eine Tabelle in MySQL wird standardmäßig auch ein Index erstellt.

-- 下面的DQL语句使用了索引。
EXPLAIN
select * from person
where id =1;

4. Wo verwendet pname wie eine Fuzzy-Abfrage einen Index?

-- 前后模糊中间精确不会使用索引
EXPLAIN
select  * from person where pname like '%e%';
-- 前面模糊后面精确也不会使用索引
EXPLAIN
select  * from person where pname like '%e';
-- 只有前面精确后面模糊才会使用索引,工作中数据量大的表模糊查询尽量不要使用 '%%',也不要使用'%a',他们都不支持索引
EXPLAIN
select  * from person where pname like 'e%';

5. So erstellen Sie einen zusammengesetzten Index. Beispiel: Ich möchte einen zusammengesetzten Index für zwei Spalten erstellen: Alter und Geschlecht.

-- 为多个列创建复合索引
CREATE INDEX INDEX_PERSON_AGE_SEX ON PERSON(PAGE,PSEX);
-- 没有创建索执行下面DQL语句引耗时1.427秒,创建索引执行耗时1毫秒
SELECT * FROM PERSON WHERE PAGE =22 AND PSEX='男';
-- 创建的复合索引,但是只对第二个索引列单独进行where条件,不会使用索引
-- 如果创建复合索引,经常使用的列放在前面
EXPLAIN
SELECT * FROM PERSON WHERE  PSEX='男';

 

 

Supongo que te gusta

Origin blog.csdn.net/shengshanlaolin_/article/details/128461188
Recomendado
Clasificación