V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yuedingwangji
V2EX  ›  问与答

约 500w 的数据,重建索引的方案

  •  
  •   yuedingwangji · 2017-03-29 00:32:29 +08:00 · 3407 次点击
    这是一个创建于 2808 天前的主题,其中的信息可能已经有所发展或是发生改变。

    苦逼公司,居然没有 DB,开发设计 SQL 的时候居然不建索引,现在数据库大约有 500 多 w 条数据,现在天天过来问我为什么查询这么慢。 这种情况有什么方法可以重建索引么

    14 条回复    2017-04-01 13:56:18 +08:00
    crytis
        1
    crytis  
       2017-03-29 00:48:53 +08:00 via iPhone
    500w 不多啊 低峰直接加
    yidinghe
        2
    yidinghe  
       2017-03-29 00:49:15 +08:00 via Android
    五百万数据建索引,一个字段也就几分钟的事吧。
    yuedingwangji
        3
    yuedingwangji  
    OP
       2017-03-29 01:18:54 +08:00
    @yidinghe 大概要多久 ?
    stabc
        4
    stabc  
       2017-03-29 01:55:08 +08:00
    我测试 VPS 的时候都是直接写入 100 万数据进行测试的,你这才 500 万而已。
    artandlol
        5
    artandlol  
       2017-03-29 02:01:21 +08:00 via Android
    不都是看哪个最慢 重建哪个?
    yangqi
        6
    yangqi  
       2017-03-29 02:08:08 +08:00
    500 万不多,直接建就好了,不过建之前要先搞清楚哪个字段,怎么建等等。把最常见的查询 explain 一下看看
    akira
        7
    akira  
       2017-03-29 03:38:35 +08:00
    低 峰 暂停服务,直接加索引或者弄个新表建好索引导过来
    andrewpsy
        8
    andrewpsy  
       2017-03-29 04:20:10 +08:00
    500 万就觉得慢应该不是没索引的问题,建议楼主 profile 一下数据库看看有没有 N + 1 的问题。
    nfroot
        9
    nfroot  
       2017-03-29 08:42:41 +08:00
    你是运维么 0 0
    bugsnail
        10
    bugsnail  
       2017-03-29 09:48:19 +08:00
    500W 数据不多,处理器慢的话也就 10 几分钟左右的事情,另外,开启慢日志查询吧,优化是个长期的过程...


    其实我更想说的是,你不是运维和 DB 揽这活做什么......
    popil1987
        11
    popil1987  
       2017-03-29 09:56:41 +08:00
    楼主这个事情还用问吗?在本地导入这 500W 数据,测试一下建索引多长时间,出现什么问题你解决不了再来这问,你自己都不想在本地试试就直接问 @yidinghe 他能知道?
    yuedingwangji
        12
    yuedingwangji  
    OP
       2017-03-29 12:41:41 +08:00
    不太懂 ,能在说详细点么
    dozer47528
        13
    dozer47528  
       2017-03-29 12:47:16 +08:00   ❤️ 1
    https://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.html

    5.6 的话,直接加,无锁。

    `alter table xxx add key xxx (xxx) , algorithm=INPLACE, lock=NONE;`

    我千万近亿的表都是直接加的。 10 分钟就好了。
    yuedingwangji
        14
    yuedingwangji  
    OP
       2017-04-01 13:56:18 +08:00
    谢谢大家的回答, 之前是我自己 sb 了, 数据库是有建主键索引的.. 就不做到为什么查询有时候好慢,现在数据有 15000W 条记录了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 19:29 · PVG 03:29 · LAX 11:29 · JFK 14:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.