0

我有 1 个包含 25 亿条记录(2.5 Cr.)的表,我正在尝试根据索引列获取记录数。执行相同的操作需要 115 秒。

询问

Select count(1) from table1 where column=code

Table1: table with 2 billion (2 Cr.)
code gets resultset from DB with 1 to 10k rows,
Column is indexed. 

Server Details
Intel Xeon 3.10ghz
8 gb RAM

MySQL server 5.1
MySQL Connector 5.0.6

My.cnf details
Default Engine =InnoDB
Innodn_buffer_pool=4G

更新查询也需要太多时间,请建议我如何调整 mysql。

4

1 回答 1

1

20 亿行表的 8 GB 内存并不算多。

查询大概只需要读取索引,select但索引必须加载到内存中。这需要将索引的所有 20 亿行加载到内存中,然后使用它。115 可能看起来有点长,但不是特别长。

您想查看内存设置,以确保您正在使用可用内存。您可能会考虑为这个尺寸问题获得更好的硬件。或者,如果这是一个常见的过滤子句,您可能希望按代码对表进行分区。

于 2013-04-01T18:16:09.847 回答