MySql Index

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比存储过程易移值

 

 

 

 

 

你可能感兴趣的:(mysql)