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

请教 1 亿行数据的 mysql 对 int 类型的列做索引,能对查询时 where col = 222 做优化吗?比如避免全表扫描/Hash 索引。

  •  
  •   a251922581 · Oct 18, 2017 · 4462 views
    This topic created in 3273 days ago, the information mentioned may be changed or developed.
    数据库比较大有几百 G,硬盘 IO 吞吐量比较低,所以要避免全表扫描,原来业务 where 列都是加了 HASH 索引的,现在新的需求有个列是 INT(10) UNSIGNED 的数字。
    先谢过。。
    9 replies  •  2017-10-19 21:04:39 +08:00
    tuzhenyu
        1
    tuzhenyu  
       Oct 18, 2017
    MySql 支持 hash 索引?
    opengps
        2
    opengps  
       Oct 18, 2017
    这个数据级别,分表分区吧
    opengps
        3
    opengps  
       Oct 18, 2017
    我有个十亿级别数据库,sqlserver 实现的,但是,设计结构采用无主键方式,时间聚集索引
    a251922581
        4
    a251922581  
    OP
       Oct 18, 2017
    @tuzhenyu 对 varchar 应该可以吧,INDEX `idx_text` USING HASH(TEXT)
    lujjjh
        5
    lujjjh  
       Oct 19, 2017 via iPhone
    @a251922581 InnoDB 和 MyISAM 都不支持 HASH 索引。坑点在于你这么写不会报错,实际上建的却是 BTree 索引……
    sagaxu
        6
    sagaxu  
       Oct 19, 2017 via Android
    如果 col=222 的行很多,依然会全表扫
    sunchen
        7
    sunchen  
       Oct 19, 2017
    能,不过具体效果取决于这一列的数据分布的离散情况,以及和数据主键的的分布的相关性。如果 222 的数据在 1 亿数据里分布很广,IO 依然很多
    sunkuku
        8
    sunkuku  
       Oct 19, 2017
    1.column 尽量不要用 int 类型
    2.尽量设计多列、覆盖索引,避免二次随机寻盘
    3.这个场景不适合 hash 索引,因为 hash 索引会大大增加索引空间,如果你的 hash 函数简单的话,还要处理 hash 冲突

    最后一点,也是搜索效率最高的一种方法,读效率可能提升百倍。但是有大的空间损耗和写数据变慢
    就是建一个冗余的表,primary key = int_column + (increased number) 。就是说让你的 int column 成为 primary key 的前缀。这样在搜索的时候,全部是顺序查找,只需要一次寻盘。
    a251922581
        9
    a251922581  
    OP
       Oct 19, 2017
    @sunkuku
    @sunchen
    多谢指点
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   745 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 20:01 · PVG 04:01 · LAX 13:01 · JFK 16:01
    ♥ Do have faith in what you're doing.