表结构:
CREATE TABLE "OMS"."OMS_CAR_SALE_RMT" (
"SHOP_CODE" CHARACTER(6) NOT NULL,
"KIND_CODE" VARCHAR(10),
"EMISSIONS" VARCHAR(10),
"TYPE_CODE" VARCHAR(20),
"INSIDE_COLOR" VARCHAR(10),
"OUTSIDE_COLOR" VARCHAR(20),
"SEND_DATE" TIMESTAMP,
"RECEIVE_DATE" TIMESTAMP,
"SALE_DATET0" TIMESTAMP,
"SALE_DATET2" TIMESTAMP
)
IN "OMS_SPACE";
我写的sql:
SELECT SHOP_CODE AS shopCode ,(days (SALE_DATET0) - days (date(RECEIVE_DATE))) AS num
FROM OMS.OMS_CAR_SALE_RMT WHERE days (SALE_DATET0) > days (date(RECEIVE_DATE))
AND days (SALE_DATET0) > days(current date - 1 year)
AND SHOP_CODE = ? ORDER BY num DESC
这句sql能优化一下吗?执行几千次好慢!
------解决方案--------------------------------------------------------
建立 冗余字段,
days (SALE_DATET0) 、 days (date(RECEIVE_DATE)) 、
AND days (SALE_DATET0) 、 days(current date - 1 year)
在字段上建立复合索引试试
------解决方案--------------------------------------------------------
SHOP_CODE, num 建立索引吧。sql应该是没有什么好优化的了。
------解决方案--------------------------------------------------------
查看你的执行计划看优化前后的变化