V2EX 首页   注册   登录
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
V2EX  ›  MySQL

整数 int 类型的数据(如订单号)有必要加索引吗?

  •  
  •   biocom · 69 天前 · 1673 次点击
    这是一个创建于 69 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如 订单编号,都是纯数字 int 类型,有必要加索引吗?加索引会增加查询速度吗?
    25 回复  |  直到 2017-07-18 13:38:11 +08:00
        1
    wdd2007   69 天前   ♥ 1
    会。
        2
    BadMan   69 天前   ♥ 1
    这不是最适合当索引主键的情况吗
        3
    biocom   69 天前
    @BadMan 主键是自增的,订单号为了不让外人看出规律,把数字做了乱序混淆。
        4
    maemual   69 天前   ♥ 1
    如果你有根据订单号查询的需求,加索引不就是必然的了么。
        5
    l1093178   69 天前   ♥ 1
    通常来说根据集合的 cardinality 来决定要不要加索引比较好
        6
    akira   69 天前
    数字类型本身并不会在查询的时候有特别的优化
        7
    biocom   69 天前
    @BadMan
    @maemual
    @akira

    貌似大家意见相反?整数 int 类型,加索引会不会提高查询速度的?
        8
    scriptB0y   69 天前   ♥ 1
    @biocom btree 不正好可以给 int 排序索引吗?

    <iframe width="560" height="315" src="https://www.youtube.com/embed/coRJrcIYbF4" frameborder="0" allowfullscreen></iframe>
        9
    scriptB0y   69 天前
        10
    iyaozhen   69 天前 via Android   ♥ 1
    和类型没啥关系吧。你要通过这个字段来库里查数据,就要加索引,快的不是一点点。
        11
    mkeith   69 天前 via iPhone
    订单号不加唯一键索引吗?
        12
    honeycomb   69 天前   ♥ 1
    如果要通过订单编号来查订单,那要加。
    如果不需要,那就不加。
        13
    pynix   69 天前
    PK 自动索引了吧。。。
        14
    gamexg   69 天前   ♥ 1
    你会不会根据订单号查订单?
    如果会的话就需要加索引,否则全表扫描耗时就大了。
        15
    swulling   69 天前 via iPhone   ♥ 1
    @biocom 这个楼里面除了你以外其他人的意见都是一致的……
        16
    0915240   69 天前   ♥ 1
    肯定需要加啊
        17
    msg7086   69 天前   ♥ 1
    @biocom 并没有相反啊,大家意见一样。
        18
    msg7086   69 天前
    > 加索引会不会提高查询速度的?



    > 整数 int 类型会不会提高查询速度的?

    不会
        19
    akira   69 天前   ♥ 1
    @biocom 我的表述让你误会了。
    你的问题描述,对索引的理解有偏差。 是否需要加索引,不是由字段的类型来决定的,而是看你实际查询语句 来具体分析的。 回到你的问题,如果是订单号 这种重复率低,业务有大量查询需求的字段,基本上就是典型的必须做索引的字段了,不管你订单号字段是字符串还是数字。

    回过来说,如果一个使用 0,1 表示男女的数字字段,字段类型也是数字,但是这种字段基本上不会做索引的, 做了索引,也不会对查询效率有任何帮助。
        20
    haython   69 天前
    MySQL 的话,自己使用 EXPLAIN 看一下就行了啊,反正我测试订单号这种场景加索引是非常有用的
        21
    wangdu2012   69 天前 via iPhone   ♥ 1
    去学习一下索引的原理就好了。在这里问,不少人就是瞎 bb
        22
    jianzhiyao020   69 天前
    [写了三年代码才知道 mysql 索引这样用]( http://www.jianshu.com/p/d08f16867012)
        23
    game3108   68 天前
    主键 不是自带索引么。。。。。。。。难道我记错了?
        24
    Hozzz   68 天前
    难道不是先看键值唯一度+数据行数再来判断是否需要增加索引吗?
        25
    ZhLTE   68 天前
    <span style="color:yellow">加</span>
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2727 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.7.5 · 61ms · UTC 02:28 · PVG 10:28 · LAX 19:28 · JFK 22:28
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1