V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
AnonymousAccout
V2EX  ›  MySQL

关于 Mysql 的复合唯一索引和普通索引

  •  
  •   AnonymousAccout · 2017-03-15 11:05:33 +08:00 via iPhone · 3370 次点击
    这是一个创建于 2591 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如果 a 列和 b 列加上了复合唯一索性,发现在用 a 列筛选数据的时候并不会用到 index scan ,是因为我加索引的姿势有问题吗,另外如果在复合索引的基础上再给 a 列加上普通索引,会出现什么问题呢
    flniu
        1
    flniu  
       2017-03-15 13:00:53 +08:00   ❤️ 1
    一般地说,如果现有索引键顺序是 (a, b),再单独给 (a) 加索引没有意义。

    不会用到 index scan ,可能跟查询的选择度有关,也可能跟 sql 的写法有关。
    allenhu
        2
    allenhu  
       2017-03-15 13:53:06 +08:00   ❤️ 1
    不是加了索引就一定会用得到,看下高性能 MySQL 吧
    devforma
        3
    devforma  
       2017-03-15 14:02:31 +08:00   ❤️ 1
    a 列的区分度不高?统计下 count(distinct(a))/count(*)
    AnonymousAccout
        4
    AnonymousAccout  
    OP
       2017-03-15 14:07:32 +08:00 via iPhone
    @flniu
    a 列为 varchar 格式 sql 语句为筛选重复数据 group by a 之后用 having count > 1 来获取结果

    @allenhu 谢谢推荐这本书 我对索引相关的是不怎么了解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1188 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:15 · PVG 07:15 · LAX 16:15 · JFK 19:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.