mysql 查询优化

一直在纠结mysql查询优化的问题,看了好多的文章思绪有点乱,到底要怎么样才会得到最优的优化语句呢。

大概我记得的

1.查询条件 = < > >= <= in 都会用到索引,但是即使是用到索引,在有的时候范围查询的时候也会进行全盘扫描使用索引,在这种范围查询时如果能显示行数的话 查询会快很多。但是这并不能解决我们的问题,这时候需要加入强制索引force index (field) 强制使用索引,在查询的时候mysql只是用一个索引进行查询,所以如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。select * from users where YEAR(adddate)<2007,将在每个行上进行运算,这将导致索引失效而进行全表扫描.只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。

2.建立适合的索引,单个索引,联合索引,全文索引,唯一索引等。索引也不能建立过多,大数量时会发生可怕的I/O读写缓慢。。。

3.表引擎的选择MYISAM,INNODB这两种表的选择,区别才有不同的数据结构方式,和不同的文件记录方式,M比较适合小表查询 读取索引文件很快找到数据,IDB表适合大数据量的存储查询,索引和数据在同一个文件,使得I/O操作很快。2表的有些区别的。

4.查看语句执行可以使用explain但是这个需要学习的。http://baike.baidu.com/view/9416916.htm


待续~~何时使用聚集索引或非聚集索引?

转载于:https://my.oschina.net/u/736500/blog/126203

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值