建表时声明
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;