select max(CZDATETIME) from JD_TPK优化

[复制链接]
查看11 | 回复8 | 2015-7-16 14:18:24 | 显示全部楼层 |阅读模式
本帖最后由 alibull 于 2014-9-16 10:27 编辑
RT,CZDATETIME为varchar2类型,没有索引,现在查询走全表扫描
select max(CZDATETIME) from JD_TPK
不过在字段上建立索引也没有走索引扫描还是全表
不知道有没别的招?

SQL> desc JD_TPK
Name Type
Nullable Default Comments

---------- ------------- -------- ------- --------------------------------------------------------------------------
TPKIDVARCHAR2(30)

JDID VARCHAR2(30)Y

FXID VARCHAR2(30)Y

TPMVARCHAR2(50)Y

TPDZ VARCHAR2(200) Y

REMARK VARCHAR2(500) Y

SFLY VARCHAR2(1) Y

CJRVARCHAR2(30)Y

CJSJ VARCHAR2(30)Y

TPLX VARCHAR2(10)Y

IMGNUM VARCHAR2(10)Y

SSID VARCHAR2(30)Y

TPLB VARCHAR2(2) Y

CZUSERID VARCHAR2(20)Y

CZDATETIME VARCHAR2(20)Y

SZST VARCHAR2(1) Y

TPBDDZ VARCHAR2(200) Y



SQL> select count(CZDATETIME),count(distinct CZDATETIME) ,count(*) from JD_TPK;
COUNT(CZDATETIME) COUNT(DISTINCTCZDATETIME) COUNT(*)
----------------- ------------------------- ----------

8661198
79318118661198

SQL> select max(CZDATETIME) from JD_TPK;

回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
这个跟CBO,选择率,基数等有关系了
回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
欢迎加入


2014.9.16 今晚20:30郭一军在线免费分享《BBED之重现ORA-8102错误及处理》
如需了解更多请登录网站http://www.jianfengedu.com/Discuz/detail/id/64
2014.9.17 晚20:30 吕海波 Vage在线免费分享《从“搭建工人”到“架构师”:如何从架构开始增大Oracle I/O吞吐》
如需了解更多请登录网站 http://www.jianfengedu.com/Discuz/detail/id/61
【技术分享QQ交流群】252296815

回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
分区表吗?索引是怎么定义的?
测试步骤发出来看看
回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
select max(czdatetime) from jd_tpk where czdatetime is not null;
回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
因为NULL的关系啊,你没有NOT NULL约束
回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
select max(CZDATETIME) from JD_TPK;
cbo选择率代价有关系,如果选择重复率比较高的话,与全表扫描是没有区别的
回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
5楼的方法如何?
回复

使用道具 举报

千问 | 2015-7-16 14:18:24 | 显示全部楼层
5楼方法,6楼原理!谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行