› 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
biocom
V2EX  ›  MySQL

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

  •  
  •   biocom · Jul 17, 2017 · 10365 views
    This topic created in 3375 days ago, the information mentioned may be changed or developed.
    比如 订单编号,都是纯数字 int 类型,有必要加索引吗?加索引会增加查询速度吗?
    25 replies  •  2017-07-18 13:38:11 +08:00
    wdd2007
        1
    wdd2007  
       Jul 17, 2017   ❤️ 1
    会。
    BadMan
        2
    BadMan  
       Jul 17, 2017   ❤️ 1
    这不是最适合当索引主键的情况吗
    biocom
        3
    biocom  
    OP
       Jul 17, 2017
    @BadMan 主键是自增的,订单号为了不让外人看出规律,把数字做了乱序混淆。
    maemual
        4
    maemual  
       Jul 17, 2017   ❤️ 1
    如果你有根据订单号查询的需求,加索引不就是必然的了么。
    l1093178
        5
    l1093178  
       Jul 17, 2017   ❤️ 1
    通常来说根据集合的 cardinality 来决定要不要加索引比较好
    akira
        6
    akira  
       Jul 17, 2017
    数字类型本身并不会在查询的时候有特别的优化
    biocom
        7
    biocom  
    OP
       Jul 17, 2017
    @BadMan
    @maemual
    @akira

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

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

    会

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

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

    回过来说,如果一个使用 0,1 表示男女的数字字段,字段类型也是数字,但是这种字段基本上不会做索引的, 做了索引,也不会对查询效率有任何帮助。
    displayabc
        20
    displayabc  
       Jul 18, 2017
    MySQL 的话,自己使用 EXPLAIN 看一下就行了啊,反正我测试订单号这种场景加索引是非常有用的
    wangdu2012
        21
    wangdu2012  
       Jul 18, 2017 via iPhone   ❤️ 1
    去学习一下索引的原理就好了。在这里问,不少人就是瞎 bb
    jianzhiyao020
        22
    jianzhiyao020  
       Jul 18, 2017
    [写了三年代码才知道 mysql 索引这样用]( http://www.jianshu.com/p/d08f16867012)
    game3108
        23
    game3108  
       Jul 18, 2017
    主键 不是自带索引么。。。。。。。。难道我记错了?
    Hozzz
        24
    Hozzz  
       Jul 18, 2017
    难道不是先看键值唯一度+数据行数再来判断是否需要增加索引吗?
    ZhLTE
        25
    ZhLTE  
       Jul 18, 2017
    <span style="color:yellow">加</span>
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5609 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 07:47 · PVG 15:47 · LAX 00:47 · JFK 03:47
    ♥ Do have faith in what you're doing.