查询加上limit 1, 反而变慢, 时间由几百毫秒变成1.7s, 查询结果数据都只有一条。以下是profile。
limit.profile (19.7 KB) nolimit.profile (20.3 KB)
查询加上limit 1, 反而变慢, 时间由几百毫秒变成1.7s, 查询结果数据都只有一条。以下是profile。
limit.profile (19.7 KB) nolimit.profile (20.3 KB)
这个limit 1 的多查几次,还是很慢吗?
是的, 特别稳定
好的,我们先分析下Profile,有问题再联系你。方便留个联系方式 吗?
已确定原因,我们修复下,方便帮我们验证下吗
我用explain检查,发现加limit的语句会多一个fragment,让查询性能下降了很多
不加limit:
mysql> explain select network_id, name, isp_admin_id, user, address from tauc.network_simple where network_id = 10000002;
±-------------------------------------------------------------------------------+
| Explain String |
±-------------------------------------------------------------------------------+
| PLAN FRAGMENT 0 |
| OUTPUT EXPRS:1: network_id | 2: name | 3: isp_admin_id | 4: user | 5: address |
| PARTITION: RANDOM |
| |
| RESULT SINK |
| |
| 0:OlapScanNode |
| TABLE: network_simple |
| PREAGGREGATION: ON |
| PREDICATES: 1: network_id = 10000002 |
| partitions=1/1 |
| rollup: network_simple |
| tabletRatio=1/16 |
| tabletList=10338 |
| cardinality=50000 |
| avgRowSize=5.0 |
±-------------------------------------------------------------------------------+
加limit
mysql> explain select network_id from tauc.ap_wifi_quality where network_id = 1 and mac = ‘mac_1’ limit 1;
±-----------------------------------------------------+
| Explain String |
±-----------------------------------------------------+
| PLAN FRAGMENT 0 |
| OUTPUT EXPRS:1: network_id |
| PARTITION: UNPARTITIONED |
| |
| RESULT SINK |
| |
| 2:EXCHANGE |
| limit: 1 |
| |
| PLAN FRAGMENT 1 |
| OUTPUT EXPRS: |
| PARTITION: RANDOM |
| |
| STREAM DATA SINK |
| EXCHANGE ID: 02 |
| UNPARTITIONED |
| |
| 1:Project |
| | <slot 1> : 1: network_id |
| | limit: 1 |
| | |
| 0:OlapScanNode |
| TABLE: ap_wifi_quality |
| PREAGGREGATION: ON |
| PREDICATES: 1: network_id = 1, 2: mac = ‘mac_1’ |
| partitions=1/1 |
| rollup: ap_wifi_quality |
| tabletRatio=1/16 |
| tabletList=17326 |
| cardinality=1 |
| avgRowSize=16.88895 |
| limit: 1 |
±-----------------------------------------------------+