gpt4 book ai didi

sql - 如何理解避免FULL TABLE SCAN

转载 作者:行者123 更新时间:2023-12-02 15:28:47 29 4
gpt4 key购买 nike

我有一张表负责存储日志。DDL 是这样的:

CREATE TABLE LOG(
"ID_LOG" NUMBER(12,0) NOT NULL ENABLE,
"DATA" DATE NOT NULL ENABLE,
"OPERATOR_CODE" VARCHAR2(20 BYTE),
"STRUCTURE_CODE" VARCHAR2(20 BYTE),

CONSTRAINT "LOG_PK" PRIMARY KEY ("ID_LOG")
);

用这两个索引:

CREATE INDEX STRUCTURE_CODE ON LOG ("OPERATOR_CODE");

CREATE INDEX LOG_01 ON LOG ("STRUCTURE_CODE", "DATA") ;

但是这个查询产生了一个全表扫描:

SELECT log.data AS data1, 
OPERATOR_CODE,
STRUCTURE_CODE
FROM log
WHERE data BETWEEN to_date('03/03/2008', 'DD-MM-YYYY')
AND to_date('08/03/2015', 'DD-MM-YYYY')
AND STRUCTURE_CODE = '1601';

为什么我总是在 DATASTRUCTURE_CODE 列上看到 FULL TABLE SCAN

(我也尝试过为 STRUCTURE_CODEDATA 创建两个不同的索引,但我总是进行全表扫描)

最佳答案

您是否对新索引和表运行统计信息?

该表中有多少数据以及该查询可能返回的数据百分比是多少?有时,全表扫描更适合小表或将返回大部分数据的查询。

关于sql - 如何理解避免FULL TABLE SCAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966579/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com