MySQl 索引(Index)不是万能的
如果我们不使用索引,就必须从第 1 条记录开始扫描,直到把所有的数据表都扫描完,才 能找到想要的数据
哪些情况下不使用索引
1.数据量少
2.重复数据多,比如性别,(但是如果一种性别数量很少,还是可以用的)
如果你想要在 100 万行数 据中查找其中的 50 万行(比如性别为男的数据),一旦创建了索引,你需要先访问 50 万 次索引,然后再访问 50 万次数据表,这样加起来的开销比不使用索引可能还要大
索引分类
1.从功能逻辑上说:主键索引,唯一索引,普通索引,全文索引(MySQL 自带的全文索引只支持英文。我们通常可以采用 专门的全文搜索引擎,比如 ES(ElasticSearch) 和 Solr)
2.按照物理实现方式:
聚集索引(按照主键来排序存储数据):使用聚集索引的时候,数据的查询效率高,但如果对数据进行插入,删除,更新等操 作,效率会比非聚集索引低。
非聚集索引(二级索引):系统会进行两次查找,第一次先找到索引,第二次找 到索引对应的位置取出数据行
3.字段个数:
单一索引
联合索 引(最左匹配原则):(x,y,z),如果是where id=xx and name=xx and age=xx,则效率很快;如果是where name=xx ,则失效
使用索引可以帮助我们从海量的数据中快速定位想要查找的数据,不过索引也存在一些不 足,比如占用存储空间、降低数据库写操作的性能等,如果有多个索引还会增加索引选择的 时间。当我们使用索引时,需要平衡索引的利(提升查询效率)和弊(维护索引所需的代 价)。

浙公网安备 33010602011771号