zoukankan      html  css  js  c++  java
  • 关于mysql联合索引

    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `uniontest` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `menuname` varchar(50) DEFAULT NULL,
      `url` varchar(200) DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `u_index` (`menuname`,`url`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

      先建立数据库,把menuname和url设置为联合索引

    需要注意的几点:

    1、在插入数据的时候Mysql 对menuname和url两列同时做了检查唯一性

    如:

    INSERT INTO uniontest(`menuname`,`url`) VALUES('订单管理','aaa.php')  成功

    INSERT INTO uniontest(`menuname`,`url`) VALUES('订单管理','bbb.php')  成功

    INSERT INTO uniontest(`menuname`,`url`) VALUES('订单管理2','aaa.php') 成功

    INSERT INTO uniontest(`menuname`,`url`) VALUES('订单管理','aaa.php') 失败

    2、在查询的时候

    explain SELECT * FROM uniontest WHERE menuname = '订单管理'   用到索引

    explain SELECT * FROM uniontest WHERE menuname = '订单管理' AND url = 'aaa.php';   用到索引

    explain SELECT * FROM uniontest WHERE url = 'aaa.php'; 没有用到索引

    遵循了联合索引最左优先的原则。

  • 相关阅读:
    02-scrapy安装及目录结构
    drf结合sql server搭建后台管理系统
    drf连接sqlserver数据库
    drf xadmin
    drf goods设计
    drf user models设计
    什么是全文检索
    周进度总结
    程序员修炼之道阅读笔记(四)
    周进度总结
  • 原文地址:https://www.cnblogs.com/zhangyuhang3/p/6873492.html
Copyright © 2011-2022 走看看