文档

Lindorm宽表引擎执行SELECT语句时提示“This query may be a fulltable scan and thus may have unpredictable performance”错误

更新时间:
一键部署

问题描述

在阿里云云原生多模数据库Lindorm宽表引擎中,执行SELECT查询语句时,提示以下错误:

DoNotRetryIOException: Detect inefficient query: SELECT*FROM xxxx This query may be a fulltable scan and thus may have unpredictable performance.

问题原因

执行SELECT语句被Lindorm宽表引擎识别为低效查询,为了避免这类查询语句给Lindorm带来性能稳定性风险,Lindorm宽表引擎默认不允许执行该类查询,同时会抛出异常,所以服务器拒绝执行。

解决方案

如果查询语句为低效查询语句,您可以通过以下四种方法解决:

  • 在查询语句末尾增加ALLOW FILTERING,跳过该检查,强制执行低效查询操作。例如,Lindorm数据库中存在一张表dt,执行SELECT * FROM dt WHERE nonPK=100;查询语句返回异常报错,则可在查询语句末尾增加ALLOW FILTERING,修改后的查询语句如下:
    SELECT * FROM dt WHERE nonPK=100 ALLOW FILTERING;
  • WHERE语句中增加表的主键条件。
  • 修改表的主键设计,避免大查询,具体详情请参见如何设计Rowkey
  • 使用高性能原生二级索引,具体详情请参见高性能原生二级索引

更多信息

如果SELECT查询的条件同时满足以下三个条件,则该查询被认为是低效查询:
  • WHERE语句中没有指定表的第一个主键的上下界。
  • WHERE语句中没有指定索引表中第一个索引列的上下界。
  • WHERE语句中存在非第一个主键(或非第一个索引列)的条件。

适用于

  • 云原生多模数据库Lindorm
  • 本页导读
文档反馈