標籤:建立 comment sort 插入 font stat time 屬性 log
日常開發中經常需要對資料進行排序,通常可以講資料庫中的資料擷取到後通過程式在記憶體中進行排序,但是這樣排序需要將排序內容從資料庫中查詢到內容,同時使用程式演算法進行排序,然後將排序結果更新入資料庫,這樣排序效率較低,開發量較大,本例採用資料庫本身自有屬性進行大資料的快速排序,具體方案如下:
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大量資料快速排序方案