Mysql大量数据快速排序方案

Posted 路伟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql大量数据快速排序方案相关的知识,希望对你有一定的参考价值。

  日常开发中经常需要对数据进行排序,通常可以讲数据库中的数据获取到后通过程序在内存中进行排序,但是这样排序需要将排序内容从数据库中查询到内容,同时使用程序算法进行排序,然后将排序结果更新入数据库,这样排序效率较低,开发量较大,本例采用数据库本身自有属性进行大数据的快速排序,具体方案如下:

1、删除临时表

DROP TABLE IF EXISTS SORT_TEMP

2、创建临时表

1 CREATE TABLE SORT_TEMP (
2     ID BIGINT(12) NOT NULL AUTO_INCREMENT,
3     SORT_ID BIGINT(12) NOT NULL COMMENT 被排序表ID,
4     PRIMARY KEY (ID)
5 ) ENGINE=INNODB AUTO_INCREMENT=0 DEFAULT CHARSET=UTF8 COMMENT=排序临时表 

3、将需要按照的排序规则内容数据插入到临时表中(按照分类表的状态倒序,ordby字段不为空的按照正序排在最前面,为空的排在最后面,更新时间倒序,ID正序)

INSERT INTO SORT_TEMP(SORT_ID) SELECT c.id FROM t_catalog c ORDER BY c.state DESC, ISNULL(c.ordby), c.ordby, c.UPDATE_TIME DESC, c.id

4、将临时表中的数据回填到被排序表的ordby字段中

UPDATE t_catalog c SET c.ordby = (SELECT id FROM SORT_TEMP t WHERE t.SORT_ID = c.id ), c.update_time = NOW() 

5、删除临时表

DROP TABLE IF EXISTS SORT_TEMP

 

以上是关于Mysql大量数据快速排序方案的主要内容,如果未能解决你的问题,请参考以下文章

数据库实现批量快速插入大量数据的六种方案

高级排序算法之双路快速排序

mysql迁移之巨大数据量快速迁移方案

数据结构大量数据(20万)的快速排序的递归与非递归算法三数取中思想

49.大量qq号及qq密码挖掘到结构体并实现精确分配内存以及快速排序

vs2003:快速片段工具