发布网友 发布时间:2022-04-08 06:16
共3个回答
热心网友 时间:2022-04-08 07:46
索引影响的是查询的列的效率,不影响排序的效率,就是说在你的这个SQL语句中,已经很简化的,从语言上是已经最优化的啦,除非你使用了分区等其他技术,在这里的SQL语句中要加索引的话应该加在查询字段而不是排序字段上,就是to_char字段上。还有上面的提到的其他技术可以提高效率,但不是从语句上面提高效率,比如分区等。追问to_char函数要实现的在oracle处理和用java处理那一个比较快?另外分区是一个统一的设置吗?追答分区是在数据库系统层面设置的,java只是一种语言,最终的查询还是要通过数据库访问组件转到oracle里面处理,最终都是要oracle来进行查询,很明显是直接使用oracle查询快了,java还需要通过数据库访问组件,odbc,oledb等等组件,多了一道工序,肯定是需要效率时间和硬件资源的,当然慢了。另外一方面,很多时候必须使用java等语言编写一个系统,给不懂数据库的人来操作数据库。
热心网友 时间:2022-04-08 09:04
transdate 是date类型的吧?那为什么要与字符比较呢?
改成下面的试试:
where TRANSDATE between to_date('2014-03-09','yyyy-mm-dd') and to_date('2014-06-09','yyyy-mm-dd')
热心网友 时间:2022-04-08 10:38
怎么了?这样没问题啊,索引加的挺好,写法也没问题。追问你的意思是索引起作用了吗?追答索引影响的效率仅仅说是查询列,那就太简单了。事实并不是如此,查询列是影响最大的,但绝不是唯一的。不管是group by 还是order by 都会受其影响。要了解order by,建议你看看分析函数,那里面order by对于索引还是要求挺高的。
另外,如果只是数据量涉及并不是那么大(一般以2G为参照点),表分区还是不建议使用。毕竟有时候在查询方式不确定的情况下,表分区之后可能会更慢。