Mysql数据库性能优化二数据库性能优化二
在上篇文章给大家介绍了mysql数据库性能优化一,今天继续接着上篇文章给大家介绍数据库性能优化相关知识。具体内容如
下所示:
建立适当的索引建立适当的索引
说起提高数据库性能,索引是最物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行个正确的’create
index’,查询速度就可能提高百倍千倍,这可真有诱惑力。可是天下没有免费的午餐,查询速度的提高是以插入、更新、删除
的速度为代价的,这些写操作,增加了大量的I/O。
是不是建立一个索引就能解决所有的问题?ename上没有建立索引会怎样?
select * from emp where ename='研发部';
—测试案例命令如下 (最好以 select * from emp e,dept d where e.empno=123451 )
*添加主键
ALTER TABLE emp ADD PRIMARY KEY(empno);
*删除主键
alter table emp drop primary key;
索引的原理说明
没有索引为什么会慢?
使用索引为什么会快?
索引的代价
1、磁盘占用
2、对dml(update delete insert)语句的效率影响
btree 方式检索,算法复杂度: log2N 次数
哪些列上适合添加索引哪些列上适合添加索引
1、较频繁的作为查询条件字段应该创建索引
select * from emp where empno = 1;
2、唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
select * from emp where sex = '男'
3、更新非常频繁的字段不适合创建索引
select * from emp where logincount = 1
4、不会出现在WHERE子句中的字段不该创建索引
索引的类型索引的类型
•主键索引,主键自动的为主索引 (类型Primary)
•唯一索引 (UNIQUE)