数据库排序在很多业务系统都有这方面的硬性要求,但是很多情况下大数据表的排序查询很是缓慢,查了下资料,现在总结如下:
可以适当调大 sort_area_size 的值( 10240000=10m )
alter system set sort_area_size=10240000 scope=spfile;
在10G中也可以直接调大PGA的最大值
alter system set pga_aggregate_target=512m scope=spfile
;
但这样做也只是提高了一点排序性能,还是达不到系统速度要求,查询要快,要见索引,所以我们帮排序字段建立上索引,但是要让orderby能调用到索引还需要一些严格的条件:
ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序.
ORDER BY中所有的列必须定义为非空.
当我们设好以后,orderby的速度变得很快,完全达到系统的要求,1张400万数据的表用时间排序只需要几十毫秒。
但是在实际应用中还是有些问题,还需进一步研究。
分享到:
相关推荐
本文将深入探讨如何优化ORDER BY语句,以提高查询性能。 MySQL有两种主要的排序方式: 1. **通过有序索引顺序扫描**:当查询涉及的字段具有相应的有序索引时,MySQL可以直接从索引中获取已排序的数据,无需额外的...
在这篇文章中,笔者就谈谈提高Order By语句查询效率的两个思路,以供大家参考。 在MySQL数据库中,Order by语句的使用频率是比较高的。但是众所周知,在使用这个语句时,往往会降低数据查询的性能。因为可能需要对...
创建表&创建索引 create table tbl1 ( id int unique, sname varchar(50), index tbl1_index_sname(sname desc...通过索引优化来实现MySQL的ORDER BY语句优化: 1、ORDER BY的索引优化 如果一个SQL语句形如: SELECT
#### 优化 ORDER BY 语句 - 避免混合使用 `DESC` 和 `ASC` 排序。 - 确保用于排序的列被索引。 - 如果排序列不是查询条件的一部分,可能会导致效率降低。 #### 优化嵌套查询 - 使用 JOIN 替代子查询,以提高查询...
MySQL数据库在处理含`ORDER BY`的SQL语句时,索引优化是非常关键的一环,因为这直接影响到查询性能。以下是一些关于如何利用索引来优化`ORDER BY`语句的知识点: 1. **合理创建索引**:索引可以显著提高数据读取...
1 mysql使用innodb引擎,请简述mysql索引的最左前缀如何优化orderby语句。 2 JVM 内存模型中,为什么要区分新生代和年老代,对于新生代,为什么又要区分eden 区survial区? 3 典型的JDBC程序按()顺序编写( 排序) 4 请...
4. ORDER BY语句的优化。ORDER BY语句用于决定查询结果的排序顺序。如果在ORDER BY子句中使用了非索引项或者包含计算表达式,将降低查询效率。为提升性能,应重新编写ORDER BY语句以使用索引,或者为相关列建立额外...
- **优化ORDER BY语句**:考虑使用索引。 - **优化JOIN语句**:优化连接条件和顺序。 - **MySQL如何优化OR条件**:通过调整条件顺序可以提高查询效率。 - **查询优先还是更新(INSERT、UPDATE、DELETE)优先**:...
在MySQL查询语句过程和EXPLAIN语句基本概念及其优化中介绍了EXPLAIN语句,并举了一个慢查询例子: 可以看到上述的查询需要检查1万多记录,并且使用了临时表和filesort排序,这样的查询在用户数快速增长后将成为噩梦...
- **优化ORDER BY语句**:给出优化ORDER BY语句的策略。 - **优化JOIN语句**:介绍优化JOIN操作的技巧。 - **MySQL如何优化OR条件**:探讨如何优化含有OR条件的SQL语句。 - **查询优先还是更新(INSERT、UPDATE...
MySQL的`ORDER BY`语句是SQL查询中用于对结果集进行排序的关键部分,它可以按照指定的列或列组合对数据进行升序(`ASC`)或降序(`DESC`)排列。在处理大量数据时,优化`ORDER BY`对于提高查询效率至关重要。 首先,...
Mysql占用CPU过高的时候,该从哪些方面下手进行优化? 占用CPU过高,可以做如下考虑: ...比如优化insert语句、优化group by语句、优化order by语句、优化join语句等等; 3)考虑定时优化文件及索引; 4)定期
buffer_gets, disk_reads, parse_calls FROM V$SQLAREA WHERE buffer_gets > 10000000 OR disk_reads > 1000000 ORDER BY buffer_gets + 100*disk_reads DESC`此脚本用于识别数据库中资源消耗最大的SQL语句,通过`...
6. **优化GROUP BY和ORDER BY**:如果可能,先对数据进行预排序,再进行GROUP BY或ORDER BY操作。同时,考虑为GROUP BY的列创建索引。 7. **避免使用DISTINCT**:DISTINCT操作会增加处理时间,尽量通过其他方式消除...
更高级的查询包括`WHERE`子句来过滤结果,`GROUP BY`进行分组,`ORDER BY`进行排序,以及`HAVING`来对分组后的数据进行过滤。 2. **数据插入**:`INSERT INTO`语句用于向表中添加新的记录,如`INSERT INTO table_...
1. **建立合适的索引**:在WHERE子句和ORDER BY子句中涉及到的列上建立索引,可以极大提高查询速度。例如,在执行如下查询时: ```sql SELECT id FROM t WHERE num = 10; ``` 如果`num`列上有索引,则可以快速...
- **11.4.4 优化order by语句** - 探讨了`ORDER BY`的性能瓶颈及其解决方案。 - **11.4.5 优化join语句** - 分析了连接查询的优化策略,如使用索引覆盖、避免使用子查询等。 - **11.4.6 MySQL如何优化or条件** ...