我有1个表,有25亿条记录(2.5点)。我正在尝试根据索引列获取记录数。执行相同的操作需要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。
答案 0 :(得分:1)
对于20亿行表而言,8 GB的ram并不是那么多。
select
查询可能只需读取索引,但索引必须加载到内存中。这需要将所有20亿行索引加载到内存中然后使用它。从长远来看,115似乎有点长,但不会太长。
您要查看内存设置,以确保使用可用内存。您可能会考虑为此尺寸问题获得更好的硬件。或者,您可能希望按代码对表进行分区,如果这是一个常见的过滤子句。
Stackoverflow可能不是这个问题的正确位置;这种优化的更好地方是https://dba.stackexchange.com/。