我有这个查询
select counterparty_id, max(id) max_id from client_administrations where counterparty_type = 1 and effective_on <= '2013-10-22' group by counterparty_id
当我解释这个查询时,它给了我
的 的 ** * ** * ** * 的** * * 1.行 * ** * ** * * * * ** *
id:1
select_type:SIMPLE
表:client_administrations
类型:索引
possible_keys:NULL
关键:cec
key_len:11
ref:NULL
行:234969
额外:使用在哪里;使用索引
1行(0.00秒)
此查询返回2,34,630行,运行时间为0.18秒。但问题是这个查询在给定的功能中被多次使用,并且数据库中的行甚至可能高达10万。这是我的担忧。我试过这个
的分析的MySQL&GT;显示查询1的配置文件;
+ ---------------------- + ---------- +
|状态|持续时间|
+ ---------------------- + ---------- +
|开始| 0.000126 |
|检查权限| 0.000018 |
|打开表| 0.000032 |
|系统锁定| 0.000016 |
| init | 0.000051 |
|优化| 0.000029 |
|统计| 0.000145 |
|准备| 0.000047 |
|执行| 0.000010 |
|排序结果| 0.000009 |
| 发送数据| 0.117429 |
|结束| 0.000024 |
|查询结束| 0.000007 |
|关闭表| 0.000012 |
|释放物品| 0.000016 |
|记录慢查询| 0.000004 |
|清理| 0.000005 |
+ ---------------------- + ---------- +
这表明发送数据需要最长的时间。我localhost中的RAM大小为3GG,服务器中的RAM大小为32 GB。即使这样也不会对查询执行所花费的时间产生任何影响。它不仅适用于此查询,而且在我的数据库中有几个查询,尽管在&#34; extra&#34;中有索引。列说明发送分析数据时所花费的最长时间。我确实改变了一些全局变量。这是我的全局变量的默认设置
的MySQL&GT;显示变量,如&#34;%cache%&#34;;
+ ------------------------------ + ------------------ ---- +
| Variable_name |价值|
+ ------------------------------ + ------------------ ---- +
| binlog_cache_size | 32768 |
| binlog_stmt_cache_size | 32768 |
| have_query_cache |是|
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit | 100 |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| metadata_locks_cache_size | 1024 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 16777216 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| stored_program_cache | 256 |
| table_definition_cache | 400 |
| table_open_cache | 400 |
| thread_cache_size | 8 |
+ ------------------------------ + ------------------ ---- +
可以做些什么来帮助这个&#34;发送数据&#34;部分。任何帮助将不胜感激