我們正在面對與選擇查詢相關的性能問題。 我們有報告表,其中包含大約2 Crore(2000萬)記錄。MySQL:選擇查詢性能問題
當我們執行簡單計數(*)來檢查計數時,它將花費超過1分鐘來顯示結果。
下面是關於MySQL,服務器和查詢信息
系統信息
OS : Debian 6.0.7
Model : AMD Opteron(tm) Processor 6172
cpu MHz : 2100.154
cache size : 512 KB
processor : 2
Memory total used free shared buffers cached
Mem: 16083 6335 9747 0 153 5323
Mysql的信息
mysql Ver 14.14 Distrib 5.1.66, for debian-linux-gnu (x86_64) using readline 6.1
my.conf設置
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
max_connections = 1000
table_cache = 128
innodb_buffer_pool_size = 3G
query_cache_limit = 512M
query_cache_size = 3G
mysql> select count(*) from reports;
+-----------+
| count(*) |
+-----------+
| 23311587 |
+-----------+
1 row in set (67.07 sec)
DB engine : Innodb
。
編輯:查詢執行索引和無索引
mysql> select count(id) from Reports USE INDEX(PRIMARY);
+-----------+
| count(id) |
+-----------+
| 17835433 |
+-----------+
1 row in set (55.56 sec)
mysql>
mysql> select count(id) from Reports;
+-----------+
| count(id) |
+-----------+
| 17835433 |
+-----------+
1 row in set (55.65 sec)
我與性能問題掙扎,任何人都可以請幫我提高表的性能?
請顯示錶格佈局。 –
嘗試只是做一個索引/鍵不計數*看看是否有所作爲 – Dave
這可以幫助:http://stackoverflow.com/questions/1332624/speeding-up-row-counting-in-mysql – NewInTheBusiness