mysql索引笔记
2015-12-04 11:52
465 查看
索引理论
类型:
哈希散列算法
原理:
哈希算法将各个数据重组成编号,查询时将数据编号直接找到查询到的值
优势:
一次性找到该值
劣势:
数据连续性差
中 编号 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 删除时无需索引名
相关文章推荐
- MySQL 数据库性能优化之表结构优化
- MySQL 数据库性能优化之缓存参数优化
- mysql命令大全
- MySQL 错误代码
- mysql的1067启动错误的解决
- Mysql主从复制
- MySQL执行计划解读
- mysql5.6 download link
- 解决MySQL客户端输出窗口显示中文乱码问题的办法
- mysql 实验
- 关于Mysql的全文本搜索功能
- MySQL加密的性能测试
- JDBC连接MySQL数据库关键的四个步骤
- 怎么解决mysql不允许远程连接的错误1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server“
- mysql-5.7.9-winx64 MySQL服务无法启动,服务没有报告任何错误的解决办法
- 装配置mysql-5.7.5-m15-winx64
- mysql join与子查 询在联表查询数据情况下,谁的效率更高?
- MySQL导入EXCEL表格数据
- mysql union和union all有什么不同? 通常谁的效率更高?
- mysql 定义函数实现批量插入数据实例[备忘]