0
create table foo (id int(11) auto_increment, value varchar(255))

该表包含大约 10,00,000 行,并且选择操作(例如 select id、来自 foo 的值)大约需要 2-3 秒才能执行,我该如何提高这里的速度

4

4 回答 4

2

select id, value from foo 将返回整个表。您提到的 2-3 秒可能包括传输结果所需的时间。这通常比数据库服务器执行实际查询花费的时间要长得多。

于 2012-04-05T18:04:32.203 回答
1

如果没有 WHERE 子句(如您发布的查询)并且您正在选择一百万行,那么很有可能不是查询需要 2-3 秒来执行它实际上是花时间来发送数据网络。

您的应用程序实际上可以一次使用一百万条数据库记录吗?如果您向用户显示该数据,那么您可能会对其进行分页,因此请更改您的查询以选择更易于管理的块中的数据。

SELECT id, value 
FROM foo
LIMIT $offset, $pgsize -- these two values will come from your application

如果您真的,真的需要一次所有这些行,那么我建议您缓存它们。

于 2012-04-05T18:16:37.473 回答
0

为 where 子句中使用的字段添加索引。

于 2012-04-05T17:58:28.183 回答
0
CREATE INDEX id_index ON foo (id) USING BTREE;

您可以在http://dev.mysql.com/doc/refman/5.0/en/create-index.html看到更多信息

于 2012-04-05T18:03:39.480 回答