索引理论
类型:
哈希散列算法
原理:
哈希算法
将各个数据重组成编号,查询时将数据编号直接找到查询到的值
优势:
一次性找到该值
劣势:
数据连续性差
中 编号 005国 编号 006
人 编号 007
民 编号 008
如果查询 中民
tree
二叉树算法
log2N
原理:当我查询3时,此时4比3大走子结点,2比3小走右结点此时找到值
优势:查询次数相对减少
1234567
4
2 6
1 3 5 7
索引加快了查询的速度,但降低了增删改的速度
注意:
换服务器导数据
.sql
新闻表500w行
连续插入500w次 建立索引5000w次,会导致工作量异常之大
处理办法,先删除索引,再导入
导入后统一加索引
不过度索引
索引条件列(where 后面最频繁的条件比较适宜索引)
索引散列值
如数据极散 不重复
过于集中的值不要索引
例如:给性别男,女加索引
索引实践
普通索引:仅仅是加快查询速度
唯一索引:行上的值不能重复
主键索引:主键不能重复 索引不一定是主键,一张表上只能有一个主键但是可以用一个或多个唯一索引
主键必须唯一
全文索引:
注意:
使用like查询的效率异常的低
重点:
全文检索有停止词的概念,即碰到This is,you,my常见词时检索无结果,且无法检索中文
语法: select * from 表名 where match(列名) against('关键字')推荐学习:sphinx,针对mysql做的一个插件支持中文检索
创建索引
查看一张表上所有索引
show index from 表名
建立索引
alter table 表名 add index(unique/fulltext) [索引名] 列名
特别 primary key唯一索引 不需要加索引名,因为主键只有一个
删除索引
alter table 表名 drop index 索引名
特别 primary key 删除时无需索引名