mysql索引详解
来源:互联网 发布:网络电视直播软件apk 编辑:程序博客网 时间:2024/04/30 04:02
索引就是通过事先排好序,从而在查找时可以应用二分查找等高效率的算法。一般的顺序查找,复杂度为O(n),而二分查找复杂度为O(log2n)。当n很大时,二者的效率相差及其悬殊。举个例子:表中有一百万条数据,需要在其中寻找一条特定id的数据。如果顺序查找,平均需要查找50万条数据。而用二分法,至多不超过20次就能找到。二者的效率差了2.5万倍!
一)索引的作用
索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经让人难以忍受了。
提升查询速度的方向一是提升硬件(内存、cpu、硬盘),二是在软件上优化(加索引、优化sql;优化sql不在本文阐述范围之内)。
能在软件上解决的,就不在硬件上解决,毕竟硬件提升代码昂贵,性价比太低。代价小且行之有效的解决方法就是合理的加索引。
索引使用得当,能使查询速度提升上万倍,效果惊人。
(二)MySQL的索引类型:
mysql的索引有5种:主键索引、普通索引、唯一索引、全文索引、聚合索引(多列索引)。
唯一索引和全文索引用的很少,我们主要关注主键索引、普通索引和聚合索引。
1)主键索引:主键索引是加在主键上的索引,设置主键(primary key)的时候,mysql会自动创建主键索引;
2)普通索引:创建在非主键列上的索引;
3)聚合索引:创建在多列上的索引。
(三)索引的语法:
查看某张表的索引:show index from 表名;
创建普通索引:alter table 表名 add index 索引名 (加索引的列)
创建聚合索引:alter table 表名 add index 索引名 (加索引的列1,加索引的列2)
删除某张表的索引:
drop index 索引名 on 表名;
0 0
- mysql 索引 详解
- MySQL 索引详解
- mysql索引详解
- MySQL索引详解
- MySql 索引 详解
- Mysql 索引详解
- mysql 联合索引详解
- MySQL 索引详解
- MySQL 索引详解
- MySQL 索引详解
- MySQL 索引详解
- mysql联合索引详解
- MySQL-索引结构详解
- Mysql索引详解
- mysql联合索引详解
- MySQL索引详解
- mysql索引详解
- mysql索引详解
- Ubuntu上安装,卸载nginx
- overflow:hidden属性清除浮动效果的理解
- 在MySQL中建立自己的哈希索引(书摘备查)
- JAVA设计模式之抽象工厂模式
- 线性渐变LinearGradient的使用
- mysql索引详解
- poj博弈n连刷
- 立业_b
- 微信小程序开发—重磅消息,张小龙公布小程序上线时间
- AngularJS 实现复选框 全选/取消全选
- xcode自动化测试小试
- 使用 python requests 模拟登陆
- MongoDB regular expression with indexed field
- yii2 widget实现筛选记录