如何优化以下的一个sql语句
2008-06-19 14:50
453 查看
表结构如下:
--Createtable createtableTEST ( OBJECT_IDVARCHAR2(15)notnull, OBJECT_NAMEVARCHAR2(128), OBJECT_TYPENUMBER ) tablespaceSYSTEM pctfree10 pctused40 initrans1 maxtrans255 storage ( initial64K minextents1 maxextentsunlimited ); --Create/Recreateprimary,uniqueandforeignkeyconstraints altertableTEST addconstraintPK_OBJECT_IDprimarykey(OBJECT_ID) usingindex tablespaceSYSTEM pctfree10 initrans2 maxtrans255 storage ( initial64K minextents1 maxextentsunlimited ); --Create/Recreateindexes createindexOBJECT_ID_INDEXonTEST(OBJECT_IDDESC) tablespaceSYSTEM pctfree10 initrans2 maxtrans255 storage ( initial64K minextents1 maxextentsunlimited ); createindexOBJECT_TYPEonTEST(OBJECT_TYPE) tablespaceSYSTEM pctfree10 initrans2 maxtrans255 storage ( initial64K minextents1 maxextentsunlimited ); createindexOBJECT_TYPE_INDonTEST(OBJECT_TYPE,OBJECT_ID) tablespaceSYSTEM pctfree10 initrans2 maxtrans255 storage ( initial64K minextents1 maxextentsunlimited );
表的记录大概有10万-500万条的记录:
需要执行的sql语句为:
select* from(select*fromtesttwhereobject_type=3orderbyobject_id) whererownum<10
通过观察执行计划为全表扫描,执行的时间大概在2秒以上,并且尝试过使用索引提示也没有作用,请各位高手帮忙看看。
如果我在object_id上建立一个desc的索引,执行时间大概在1秒以内。
另外:
如果我把object_id为number类型的话,则查询在0.0n秒。
请各位帮忙看看可以在什么地方可以优化。
如果在生产环境的话,object_id的类型是很难去变更的,因为要考虑到应用的兼用性是否有问题。
相关文章推荐
- 优化SQL查询:如何写出高性能SQL语句
- 如何用SQL语句查询一个数据表所有字段的类型
- sql语句,如何截取指定字段某一个字符出现后的后面的字符串吗?
- 如何优化sql语句
- 一个SQL语句的优化
- 如何通过跟踪一个客户端程序发出的sql的方法来优化SQL
- 优化SQL查询:如何写出高性能SQL语句
- 如何高效快速地优化MySQL、SQL语句(附源码)
- 优化SQL查询:如何写出高性能SQL语句
- 关于SQL语句优化的一个问题
- spool一个sql文件,如何去掉文件开头的sql语句
- SQL查询优化:如何写出高性能SQL语句
- 如何用 SQL Tuning Advisor (STA) 优化SQL语句
- 优化SQL查询:如何写出高性能SQL语句
- 优化SQL查询:如何写出高性能SQL语句
- 如何用 SQL Tuning Advisor (STA) 优化SQL语句
- mysql在大数据量下,如何优化SQL语句?
- 优化SQL查询:如何写出高性能SQL语句
- 如何优化SQL语句
- 如何判断一个表是否建立索引约束等信息的SQL语句