建表时声明

create table testindex (

id int(3) not null, age int(3) not null, dept char(12),name char(12),primary key(id),key index_name(name)

);

desc testindex;


联合索引

create index index_name_test on testindex(age,dept);

create index index_name_tests on testindex(name(1),dept(1));

show create table testindex\G;

show columns from testindex\G;


尽量在唯一值多的大表上建立索引

对三个列建立,有个前缀特性,如:a,b,c a,ab,abc可以走索引,但是bc之类(开头不为a)的不走索引


唯一索引(可以为空,主键索引不能为空)

create unique index uni_ind_name_test on testindex(dept)


创建条件:在大表上建立唯一值多的索引

select count(distinct user)from mysql.user;


删除索引

drop index index_name_test from mysql.user;


--排查慢语句

查看负载,io,cpu

show full percesslist;


慢查询分析记录导致查询慢的语句:

long_query_time = 1

log-slow-queries = /data/3306/slow.log

log_queries_not_using_indexes


分割日志发送至管理员

加explain查看语句的具体执行方式

定位在哪些列上建立索引,查看条件字段列的唯一值数量select count(distinct column_name) from table_name;