mysql创建高性能索引
简单描述 mysql中 索引 主键 唯一索引 联合索引的区别对数据库性能有什么影响
创建mysql复合索引(组合索引)应该注意哪些事项
mysql索引的基础和类型
索引类似于书籍的目录,要想找到一本书的某个特定主体,需要先查找书的目录,定位对应的页码
存储引擎使用类似的方式进行数据查询 先去索引当中找到对应的值,然后根据匹配的索引找到对应的数据行
索引对性能的影响
大大减少服务器需要扫描的数据量
帮助服务器避免排序和临时表
将随机I/o变顺序I/o
大大提高查询的速度,降低写的速度,占用磁盘空间
索引的使用场景
对于非常小的表,大部分情况下全表扫描效率更高
中到大型表,索引非常有效
特大型的表,建立和使用索引的代价将随之增长,可以使用分区技术来解决
索引的类型
实现在存储引擎层
普通索引:最基本的索引 没有任何约束限制
唯一索引 : 与普通索引类似,但是具有唯一性约束
主键索引:特殊的唯一索引,不允许有空值
唯一索引和主键索引的区别
一个表只能有一个主键索引,可以有多个唯一索引
主键索引一定是唯一索引 唯一索引不是主键索引
主键可以与外键构成参照完整性约束,防止数据不一致
组合索引:将多个列组合在一起创建索引 可以覆盖多个列
外键索引:只有 innodb类型的表才可以使用外键索引,保证数据的一致性。完整性和实现级联操作
全文索引 :mysql自带的全文索引只能用于myisam并且只能对英文进行全文检索
mysql索引的创建原则
最适合索引的列是出现在 where子句中的列,或链接子句中的列而不是出现在select关键字后的列
索引列的基数越大 索引的效果越好
对字符串进行索引 应该制定一个前缀长度,可以节省大量的索引空间
根据情况创建复合索引 复合索引可以提高查询效率
避免创建过多索引,索引会二外占用磁盘空间,降低写操作效率
主键尽可能选择短的数据类型,可以有效减少索引的磁盘占用提高查询效率
mysql索引的注意事项
复合索引遵循前缀原则
key(a,b,c)
where a=1 and b=2 and c=3 V
where a=1 and b=2V
where a=1 V
where b=2 and c=3 X
where a=1 and c=3 X
like查询,%不能在前,可以使用全文索引(全文检索引擎)
column is null 可以使用索引
如果mysql估计 使用索引比全表扫描更慢 会放弃使用索引
如果or前的条件中的列有索引,后面的没有,索引都不会被用到
列类型是字符串 查询时一定要给值加引号 否则索引失效 where name=100; name为varchar类型
网友评论