苦逼公司,居然没有 DB,开发设计 SQL 的时候居然不建索引,现在数据库大约有 500 多 w 条数据,现在天天过来问我为什么查询这么慢。 这种情况有什么方法可以重建索引么
1
crytis 2017-03-29 00:48:53 +08:00 via iPhone
500w 不多啊 低峰直接加
|
2
yidinghe 2017-03-29 00:49:15 +08:00 via Android
五百万数据建索引,一个字段也就几分钟的事吧。
|
3
yuedingwangji OP @yidinghe 大概要多久 ?
|
4
stabc 2017-03-29 01:55:08 +08:00
我测试 VPS 的时候都是直接写入 100 万数据进行测试的,你这才 500 万而已。
|
5
artandlol 2017-03-29 02:01:21 +08:00 via Android
不都是看哪个最慢 重建哪个?
|
6
yangqi 2017-03-29 02:08:08 +08:00
500 万不多,直接建就好了,不过建之前要先搞清楚哪个字段,怎么建等等。把最常见的查询 explain 一下看看
|
7
akira 2017-03-29 03:38:35 +08:00
低 峰 暂停服务,直接加索引或者弄个新表建好索引导过来
|
8
andrewpsy 2017-03-29 04:20:10 +08:00
500 万就觉得慢应该不是没索引的问题,建议楼主 profile 一下数据库看看有没有 N + 1 的问题。
|
9
nfroot 2017-03-29 08:42:41 +08:00
你是运维么 0 0
|
10
bugsnail 2017-03-29 09:48:19 +08:00
500W 数据不多,处理器慢的话也就 10 几分钟左右的事情,另外,开启慢日志查询吧,优化是个长期的过程...
其实我更想说的是,你不是运维和 DB 揽这活做什么...... |
11
popil1987 2017-03-29 09:56:41 +08:00
楼主这个事情还用问吗?在本地导入这 500W 数据,测试一下建索引多长时间,出现什么问题你解决不了再来这问,你自己都不想在本地试试就直接问 @yidinghe 他能知道?
|
12
yuedingwangji OP 不太懂 ,能在说详细点么
|
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 分钟就好了。 |
14
yuedingwangji OP 谢谢大家的回答, 之前是我自己 sb 了, 数据库是有建主键索引的.. 就不做到为什么查询有时候好慢,现在数据有 15000W 条记录了
|