这张表可以説成一个日志表,表结构类似(用户 id,用户当前经验,用户变更经验值,用户变更经验值类型,创建时间), 有一亿条数据, 总共大小 12.6G. 对用户 id 做了索引,索引 1.6G
1
lhbc 2017-02-11 14:33:16 +08:00 via iPhone
打开是指 select * ?
|
3
grimpil 2017-02-11 15:52:15 +08:00 via Android
用命令行试试呗
|
4
wudege 2017-02-11 16:08:40 +08:00
可以更改 Web Server 和 PHP 执行超时时间;
[参考]( https://segmentfault.com/a/1190000002686153) |
5
lhbc 2017-02-11 16:43:14 +08:00 via iPhone
为什么不是 select count(id)?
select * 任何情况都尽量不要用 |
6
wvidc 2017-02-11 17:01:55 +08:00
分表
|
7
msg7086 2017-02-11 17:09:15 +08:00
就问一句, InnoDB 还是 MyISAM/Aria ?
|
9
uzumaki 2017-02-11 20:54:48 +08:00 via Android
本地用软件试试?
|
11
Felldeadbird 2017-02-11 21:59:41 +08:00
没有条件下,扫全表啊。这个情况还是用命令行吧。
|
12
pathbox 2017-02-11 22:02:43 +08:00
和你的表结构有关, count(*) 不一定就用的主键, 尝试用 count(id) 试试呗
|
13
HLT 2017-02-11 22:04:24 +08:00
谁设计的。。。
|
14
mansur 2017-02-11 22:12:01 +08:00
你删除过记录就要挨个数了
|
15
gouchaoer 2017-02-11 23:12:20 +08:00 via Android
说了半天都没人告诉 lz , select (*)在 myiaam 中是常数级的, innodb 却不是的,至于 select count 一回事。。。走主键索引也是扫表啊。。。。你 explain 不就知道了
|
16
zhtsuc 2017-02-11 23:18:57 +08:00
不管是啥,你 select 在一个亿 db 里查询,肯定慢,遇到这种情况,只能分片查询,或者从一开始就分表。
|
17
sagaxu 2017-02-12 14:53:12 +08:00
|
18
gam2046 2017-02-12 21:22:21 +08:00
没有 where 语句,何来走索引一说?都没筛选条件,不就是扫全表然后输出么?和 select 啥貌似没啥关系......
走不走索引不应该是看条件语句么?和查询的字段难道也有关系... |