1.索引类型
- 主键索引(primary key)
- 唯一索引(unique)
- 普通索引(可以有多列):CREATE INDEX index_name ON table_name (column_list)
- 全文索引
- 空间索引
2.查看索引
- show index from tblname;
- show keys from tblname;
- desc tblname(不能显示索引名)
3.删除索引
- DROP INDEX index_name ON talbe_name
- ALTER TABLE table_name DROP INDEX index_name
- ALTER TABLE table_name DROP PRIMARY KEY
4.创建索引
- ALTER TABLE table_name ADD INDEX index_name (column_list)
- ALTER TABLE table_name ADD UNIQUE (column_list)
- ALTER TABLE table_name ADD PRIMARY KEY (column_list)
- CREATE INDEX index_name ON table_name (column_list)
- CREATE UNIQUE INDEX index_name ON table_name (column_list)
5.索引的算法:BTREE log2n(查询效率)
6.存储引擎
- myisam BTree
- innodb BTree
- memory/heap Hash,BTree
7.索引适合
- 肯定在where条件经常使用
- 该字段的内容不是唯一的几个值(如sex)
- 字段内容不是频繁变化
8.索引注意事项
- 对于创建的多列索引,只是查询条件条件最左边的列,索引一般都会使用
- 对于使用like的查询,查询如果是‘%关键字’,便不会使用索引(空间索引代替),‘关键字%’却会使用索引
9.使用索引的缺点:
- 磁盘占用
- 对dml(update,delete,insert)语句的效率影响(索引二叉树重新调整->dml变慢)
10.查询数据库信息
- show status
- show status like 'connection' 查询连接数
- show status like 'com_select' 查询次数
- show status like 'com_update'
- show status like 'com_insert'
- show [session|global] status like ...默认的是session
10.sql的执行过程
- 编译-->执行-->缓存
- 存储过程比sql语句效率高。但sql比存储过程易移值