【发布时间】:2016-07-11 14:48:24
【问题描述】:
我在 MySQL 中有 1000 万行和 2 GB 数据的表 选择 IN LIFO 格式数据很慢
表格引擎是=InnoDB
表有一个主键和一个唯一键
SELECT * FROM link LIMIT 999999 , 50;
我如何提高表的性能。 ?
表结构
id int(11) NO PRI NULL auto_increment
url varchar(255) NO UNI NULL
website varchar(100) NO NULL
state varchar(10) NO NULL
type varchar(100) NO NULL
prio varchar(100) YES NULL
change varchar(100) YES NULL
last varchar(100) YES NULL
注意:
SELECT * FROM link LIMIT 1 , 50; 正在占用 .9ms 但当前 sql 正在占用 1000ms 它的 1000 次占用更多时间
【问题讨论】:
-
你需要表中的所有列吗?你能详细说明一下慢 - 需要多长时间?还有什么是列的数据类型?
-
你可以在下面运行查询并粘贴结果
EXPLAIN SELECT * FROM link LIMIT 999999 , 50; -
它几乎需要 1 秒,但是当行数更大时,获取时间会更长 SELECT * FROM link LIMIT 1 , 50;需要 0.9 毫秒,但当前 sql 需要 1000 毫秒,其 100 次需要更多时间。
-
1,000,000,000,000 行存储在 5 GB 中,即每字节 200 行,太棒了。那么实际的数字/大小是多少?
-
你真的坐在那里点击[下一步]按钮 20,000 次?我想不是。如果没有
ORDER BY,则无法保证获得任何特定的 50 行!
标签: mysql sql query-optimization