zoukankan      html  css  js  c++  java
  • 索引的使用

    当表有索引的时候,每个select语句都会先扫描索引,索引是有序存储的并且以搜索为目标进行了优化

    如果没有加索引,那么每一句select语句都要随机地逐条扫描整个表

    索引的另一个用途是快捷高效地在相关表之间做连接操作,在需要连接的列上使用索引可以显著提高性能

    创建索引:alter table 表名 add index (列名)

    如果查找的是以通配符开头select * from artist where name like '%Queen'则mysq不会使用索引,但可以这么查name like REVERSE('% Queen')

    mysql不支持基于索引的函数,select * from artist where upper(name) = upper('Billy Joel') name列上加了索引,当在name列上使用函数的时候,mysql就不会使用name列上的索引

    当知道数据确实是唯一的情况下,把索引定义为唯一索引是非常好的方式alter table artist drop index name,add unique index(name)

    创建多列索引alter table 表名 add primary key 索引名字 (列名1,列名2...)

    alter table album add index m1 (country_id,album_type_id)

    多列索引最左边的列可以被当作单一列索引来使用,当这些多列被用于group by或order by时最左边的列也可以显著提高性能

    where order by group by的条件可以拼索引

    隐藏秘籍:

    1.删除重复索引

    name2中最左项last_name被包含在name1中,可将name1删掉

    2.监控无效的索引

    3.改进索引列

    列类型的优化

    1.IPv4定义为INT UNSIGNED只占4字节,通常定义为VARCHAR(15)平均占用12字节

    2.MD5用CHAR(32)来存储。

    其他优化:

    Key_len:

  • 相关阅读:
    windows用户管理与远程管理
    Linux之基础网络配置
    linux之程序包管理
    linux之特殊权限
    设计模式学习笔记——Prototype原型模式
    设计模式学习笔记——Visitor 访问者模式
    XXX is not a function
    终于决定要开始写自己的博客了,先Mark一下
    element ui 与vue跨域通信操作 和框架语法,contentype
    跨域与版本控制
  • 原文地址:https://www.cnblogs.com/lonely-buffoon/p/5708599.html
Copyright © 2011-2022 走看看