美文网首页
face17 mysql创建高性能索引

face17 mysql创建高性能索引

作者: 谢凌 | 来源:发表于2018-11-11 14:01 被阅读0次

    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类型

    相关文章

      网友评论

          本文标题:face17 mysql创建高性能索引

          本文链接:https://www.haomeiwen.com/subject/shvxfqtx.html