类型
主键索引 //它是一种特殊的色i一索引,不允许有空值
唯一索引 //索引列的值必须唯一,但允许有空置
普通索引 //最基本的索引,没有任何限制
全文索引 //fulltext是一种只适用于MyISAM表的索引类型
组合索引 //也叫多列索引,创建组合索引的好处是比分别创建多个单列索引的查询速度要快很多。组合索引创建遵循“最左前缀”规则
如三列:id、name、age;id、name;id;三个索引
Mysql是通过match()和against()这两个函数来实现它的全文索引查询的功能。
索引创建规范
索引是一把双刃剑,它可以提高查询效率但也会降低插入和更新的速度并占用磁盘空间
在插入与更新数据时,要重写索引文件
单张表中索引数量不超过5个
单个索引中的字段数不超过5个
不使用更新频繁的列作为主键
合理创建组合索引(避免沉余)
不在低基数列上建立索引,例如性别
不在索引列进行数学运算和函数运算,会使索引失效
不使用%前导的查询,如like "%xxx" 无法使用索引 (放后面可以)
不使用反向查询,如 not in / not like ,无法使用索引,导致全表扫描
选择越小的数据类型越好,因为通常越小的数据类型通常在磁盘,内存,CPU,缓存中占用的空间很少,操作速度就比较快
在经常需要排序(order by),分组(group by)和的distinct列上加索引(单独order by 用不了索引,索引考虑加where 或加limit)
在表与表的连接条件上加上索引,可以加快连接查询的速度。
使用短索引,如果你的一个字段是char(32)或者int(32),在创建索引的时候指定前缀长度,比如前10个字符(前提是多数值是唯一的)那么短索引可以提高查询速度,并且可以减少磁盘的空间,也可以减少I/O操作
MYSQL存储引擎
MyISAM
优点:1、读的性能比InnoDB高很多
2、索引与数据分开,使用了压缩,从而提高了内存使用率
缺点:1、不支持事务(事务是多个操作)
2、写入数据时,直接锁表。
InnoDB
优点:1、支持事务,支持外键,支持行级锁
缺点:1、不支持全文索引
2、行级锁并不绝对,当不确定扫描范围时,锁全表
3、索引与数据是紧密捆绑的,没有使用压缩导致体积庞大
(写入数据量不打,无所谓事务。而读的操作特别多,就选择MyISAM)
MySQL实时监控
orzdba //blog
http://www.lepus.cc/soft/18
集群数据库监控
Jmeter开发mysql性能测试脚本

网友评论