DM Database Server 64 v8,创建表CREATE TABLE "A"."B"("C" NUMBER(38,0) NOT NULL,"D" NUMBER(38,0) NOT NULL,"E" NUMBER(38,0),"F" CHAR(24),CONSTRAINT "B_PKEY" NOT CLUSTER PRIMARY KEY("C","D")) STORAGE (ON "BIGTS",CLUSTERBTR).执行SQL语句: SELECT * FROM "A","B" WHERE ((C<=500) or (C=500 AND D< =100000)) ORDER BY "C","D".为什么不走索引,添加hint也无效
自行造数据验证了下,数据分布平均的情况下是走索引的,如果你那边没走索引,可能是优化器判断索引代价过高
1.收集统计信息后,重新执行查询,看看是否使用了索引。
2.在你的查询中,条件是 (C <= 500) OR (C = 500 AND D <= 100000) 。如果没有合适的索引来优化这个复杂的条件,可能会选择全表扫描而不是使用索引。尝试简化查询条件或确保索引能够有效覆盖这些条件。
3.如果你尝试使用Hint来强制使用索引,但依然无效,可能是因为优化器认为使用索引的成本仍然高于全表扫描的成本。