ORACLE 如何优化SQL

来源:百度知道 编辑:UC知道 时间:2024/06/15 04:33:51
SELECT DISTINCT TO_CHAR(时间字段,'YYYY-MM-DD') AS A FROM 表 ORDER BY A DESC

时间字段是主键并且有索引,数据记录近4000W条,使用上面语句查需要近200秒,有没有什么好办法能进一步优化?
本人又找到一个方法,语句如下:
SELECT TO_CHAR(时间字段,'YYYY-MM-DD') FROM 表 GROUP BY TO_CHAR(时间字段,'YYYY-MM-DD')

使用此查询近4000W条记录需要近100秒时间。

请问各位达人,还有没有更优化的办法?

SELECT TO_CHAR(时间字段,'YYYY-MM-DD') FROM 表 GROUP BY TO_CHAR(时间字段,'YYYY-MM-DD') where 条件;

加条件限制条数或加上指定时间段这样速度会快一点。

你可以建立一个索引,直接把TO_CHAR(时间字段,'YYYY-MM-DD')建立成索引的字段,这样你的这个SQL的访问应该会直接走索引,速度上应该会有提高的。

创建一个机遇TO_CHAR(时间字段,'yyyy-mm-dd')的索引,group by需要对字段进行排序,所以索引会对速度有所帮助。