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

2017-03-29 00:32:29 +08:00
 yuedingwangji

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

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


其实我更想说的是,你不是运维和 DB 揽这活做什么......
popil1987
2017-03-29 09:56:41 +08:00
楼主这个事情还用问吗?在本地导入这 500W 数据,测试一下建索引多长时间,出现什么问题你解决不了再来这问,你自己都不想在本地试试就直接问 @yidinghe 他能知道?
yuedingwangji
2017-03-29 12:41:41 +08:00
不太懂 ,能在说详细点么
dozer47528
2017-03-29 12:47:16 +08:00
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
2017-04-01 13:56:18 +08:00
谢谢大家的回答, 之前是我自己 sb 了, 数据库是有建主键索引的.. 就不做到为什么查询有时候好慢,现在数据有 15000W 条记录了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/351048

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX