mysql 索引
什么是mysql索引?
mysql的索引就好比:新华字典的目录;
---》现在把新华字典的目录撕掉,要在这本书里找出“华”字,那么就得一页一页的翻直到找到“华”字;
没有如果以没有加索引的字段,为条件查询百万级的表,就好比把新华字典目录撕了找“华”字;效率低下;
结论:索引=目录(主键默认加索引)
索引方式一:
二叉树索引 查询:log2n次
索引方式二:
哈希索引(散列索引)理论上降为1次;
缺点:
1.加索引后加快了查询的速度,在insert/update/delete 时,同时需要添加到索引里,降低了增删改的速度;
2.索引文件占用空间,索引文件大于数据文件;
问题:
某网站要换服务器,导数据,一张500万行的表
table news(
15列,其中10列加了索引;
)
该如何操作让其快速导入?
如果直接导的话,插入一条建10个索引,插入一条建立一个索引;这样就建立了5000万条索引,效率低下;
解决办法:先修改表去掉索引,导入后再加索引;因为统一加索引的速度快于一条一条加;
使用原则:
1.不要过度索引
2.在查询最频繁的条件上加索引:
如在判断用户名时,在username加索引;
在查询商品时,在商品名上加索引;
给散列值的加索引,碰撞性越多,值越集中的不易加索引,如性别:男/女;
索引的创建语法: