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

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

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

    会

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

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

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