MySQL 인덱스 사용 전 과정 분석
-- Table "user" DDL
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`age` tinyint(4) DEFAULT NULL,
`nickname` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `name` (`name`),
KEY `age` (`age`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Table "user2" DDL
CREATE TABLE `user2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`email` varchar(100) DEFAULT NULL,
`age` tinyint(4) DEFAULT NULL,
`nickname` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `name` (`name`),
KEY `age` (`age`)
) ENGINE=MyISAM AUTO_INCREMENT=131610 DEFAULT CHARSET=utf8;
표 user&user 2 에 각각 10W 개의 테스트 데 이 터 를 삽입 합 니 다
<?php
$example = array(
'@qq.com',
'@sina.com.cn',
'@163.com',
'@126.com',
'@gmail.com',
'@yahoo.com',
'@live.com',
'@msn.com',
'@cisco.com',
'@microsoft.com',
'@ibm.com',
'@apple.com');
$con = mysql_connect("localhost", "root", "your_mysql_password");
mysql_select_db("index_test", $con);
// 10W user & user2
for($i=0; $i<100000; $i++)
{
$temp = md5(uniqid());
$name = substr($temp, 0, 16);
$email = substr($temp, 8, 12).$example[array_rand($example, 1)];
$age = rand(18, 99);
$nickname = substr($temp, 16, 16);
mysql_query("INSERT INTO user(name,email,age,nickname) VALUES('$name','$email',$age,'$nickname')");
mysql_query("INSERT INTO user2(name,email,age,nickname) VALUES('$name','$email',$age,'$nickname')");
}
mysql_close($con);
echo 'success';
?>
색인 사용 분석 Explain Select*from user where id>100\G; 그림 1 설명 id>100\G;사용자 2 에서*를 선택 합 니 다 그림 2 User 표 의 데 이 터 는 User 2 표 의 데이터 와 같 고 색인 구조 도 같 지만 저장 엔진 은 다르다.그림 1 에서 조 회 는 PRIMARY 메 인 키 색인 을 사 용 했 고 조회 최적화 기 가 예상 한 결 과 는 65954 줄 정도(실제 131513)이다.그림 2 에서 조 회 는 색인 을 사용 하지 않 고 전체 표를 스 캔 했 고 돌아 온 예상 결 과 는 131608 줄(실제 131509)이 었 다.Explain Select * from user where id>100 and age>50 \G; 그림 3 설명 id>100 및 age=50\\G;사용자 에서*를 선택 합 니 다 그림 4 설명 id>100 및 age>50\\G;사용자 2 에서*를 선택 합 니 다 그림 5 설명 id>100 및 age=50\\G;사용자 2 에서*를 선택 합 니 다 그림 6
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[SQL] - 인덱스의 내부 작동1. 균형 트리의 개념 노드 : 데이터가 저장되는 공간 루트 노드 : 노드의 가장 상위 노드 리프 노드 : 제일 마지막에 존재하는 노드 중간 노드 : 루트, 리프 중간에 끼인 노드 페이지 : MySQL에서 부르는 노...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.