浅谈索引优化

索引的优化
一:应用场景(千万条数据)
说起提高数据库性能,索引是最物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行个正确的’create index’,查询速度就可能提高百倍千倍,这可真有诱惑力。可是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的I/O。
二:概述
1 : 索引(在MySQL中也叫做 'key' 键)是存储引擎用来快速找出记录的一种数据结构
2:索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要,在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显
3:MySQL的建立对于MySQL的高效运行很重要,索引可以大大提高MySQL的检索速度
4:索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列(alter table dept add index myind (dname,loc);)。
5:实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录
6:因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件, 建立索引会占用磁盘空间的索引文件

三:索引数据类型的选择
1:越小的数据类型通常更好
小的数据类型通常在磁盘,内存和cup缓存中都需要更小的空间,处理起来更快
2:简单的数据类型更好
整型数据比起字符,处理开销更小,因为字符串的比较复杂,在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间,以及用整型数据存储ip地址
3:尽量避免null
应该在指定的列设定为NOT NULL,除非你想要存储NULL,在MySQL中,含有控制的列很难进行查询优化,因为他们使得索引,索引的统计信息以及比较运算更加复杂,你可以用0,应该特殊的值或者应该空串代替空值.
2:选择合适的标识符
1:选择合适的标识符不仅应该考虑到存储类型,而且应该考虑MySQL是怎样运算和比较的
2:整型:
通常作为标识符的最好选择,因为可以更快的处理,而且可以设置为AUTO-INCREMENT
3:字符串
尽量避免使用字符串作为标识符,它们消耗更多的空间,处理起来比较慢,而且通常来说,字符串是随机的,索引它们在索引中的位置也是随机的,这会导致页面分裂,随机访问磁盘,聚簇索引分裂(对于使用聚簇索引的存储引擎)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值