• 【mysql】索引与排序、重复索引、冗余索引


    索引与排序

    排序可能发生2种情况:

      1: 对于覆盖索引,直接在索引上查询时,就是有顺序的, using index

      2: 先取出数据,形成临时表做filesort(文件排序,但文件可能在磁盘上,也可能在内存中)

      我们的争取目标-----取出来的数据本身就是有序的! 利用索引来排序.

     

    比如: goods商品表, (cat_id,shop_price)组成联合索引,

        where cat_id=N order by shop_price ,可以利用索引来排序,

     

    select goods_id,cat_id,shop_price from goods order by shop_price;

      // using where,按照shop_price索引取出的结果,本身就是有序的.

     

     

    select goods_id,cat_id,shop_price from goods order by click_count;

        // using filesort 用到了文件排序,即取出的结果再次在磁盘排序

     

     

     

    重复索引与冗余索引

     

    重复索引:(不允许)

    重复索引: 是指 在同1个列(如age), 或者 顺序相同的几个列(age,school), 建立了多个索引,称为重复索引, 重复索引没有任何帮助,只会增大索引文件,拖慢更新速度, 去掉.

     

    mysql> alter table t7 add index url1(url);
    Query OK, 0 rows affected (0.67 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table t7 add index url2(url);
    Query OK, 0 rows affected, 1 warning (0.50 sec)
    Records: 0  Duplicates: 0  Warnings: 1

      mysql语法上是允许通过的,但是没有实际意义,只会增大索引文件。

     

     

    mysql> show create table t7G
    *************************** 1. row ***************************
           Table: t7
    Create Table: CREATE TABLE `t7` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `url` varchar(40) DEFAULT NULL,
      `crcurl` int(10) unsigned NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`),
      KEY `url` (`url`(15)),
      KEY `crcurl` (`crcurl`),
      KEY `url1` (`url`),
      KEY `url2` (`url`)
    ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8
    1 row in set (0.02 sec)

     

     

     冗余索引(允许)

     

    冗余索引是指2个索引所覆盖的列有重叠, 称为冗余索引

    比如 x,m,列 , 加索引 index x(x), index xm(x,m)

      x,xm索引, 两者的x列重叠了, 这种情况,称为冗余索引.

     

    甚至可以把 index mx(m,x) 索引也建立, mx, xm 也不是重复的,因为列的顺序不一样.

      mx(m,x)是先排序m,再排序x

      xm(x,m)是先排序x,再排序m

     

     

     

     

  • 相关阅读:
    c# 第41节 异常处理
    c# 第40节 密封类、密封方法
    c# 第39节 抽象类、抽象方法
    c# 第38节 接口的实现
    c# 第37节 接口的实现与继承
    c# 第36节 接口的声明
    测试面试题集-接口测试
    Python接口自动化测试系列文章汇总
    Jmeter系列之简介与环境安装
    Python接口自动化之logging封装及实战
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/8594721.html
Copyright © 2020-2023  润新知