国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL中利用索引對(duì)數(shù)據(jù)進(jìn)行排序的基礎(chǔ)教程

2024-07-24 12:45:20
字體:
供稿:網(wǎng)友

MySQL中,有兩種方式生成有序結(jié)果集:一是使用filesort,二是按索引順序掃描。利用索引進(jìn)行排序操作是非常快的,而且可以利用同一索引同時(shí)進(jìn)行查找和排序操作。當(dāng)索引的順序與ORDER BY中的列順序相同且所有的列是同一方向(全部升序或者全部降序)時(shí),可以使用索引來排序。如果查詢是連接多個(gè)表,僅當(dāng)ORDER BY中的所有列都是第一個(gè)表的列時(shí)才會(huì)使用索引。其它情況都會(huì)使用filesort。

MySQL索引通常是被用于提高WHERE條件的數(shù)據(jù)行匹配或者執(zhí)行聯(lián)結(jié)操作時(shí)匹配其它表的數(shù)據(jù)行的搜索速度。
MySQL也能利用索引來快速地執(zhí)行ORDER BY和GROUP BY語句的排序和分組操作。
通過索引優(yōu)化來實(shí)現(xiàn)MySQL的ORDER BY語句優(yōu)化:

create table actor(actor_id int unsigned NOT NULL AUTO_INCREMENT,name varchar(16) NOT NULL DEFAULT '',password varchar(16) NOT NULL DEFAULT '',PRIMARY KEY(actor_id), KEY (name)) ENGINE=InnoDBinsert into actor(name,password) values('cat01','1234567');insert into actor(name,password) values('cat02','1234567');insert into actor(name,password) values('ddddd','1234567');insert into actor(name,password) values('aaaaa','1234567');

 

mysql> explain select actor_id from actor order by actor_id /G
*************************** 1. row *************************** id: 1 select_type: SIMPLE table: actor type: indexpossible_keys: NULL key: PRIMARY key_len: 4 ref: NULL rows: 4 Extra: Using index1 row in set (0.00 sec)

 

mysql> explain select actor_id from actor order by password /G
*************************** 1. row *************************** id: 1 select_type: SIMPLE table: actor type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 4 Extra: Using filesort1 row in set (0.00 sec)

 

mysql> explain select actor_id from actor order by name /G
*************************** 1. row *************************** id: 1 select_type: SIMPLE table: actor type: indexpossible_keys: NULL key: name key_len: 18 ref: NULL rows: 4 Extra: Using index1 row in set (0.00 sec)

下面來羅列一些常見的索引對(duì)ORFER BY的優(yōu)化情況:

1、如果一個(gè)SQL語句形如:

SELECT [column1],[column2],…. FROM [TABLE] ORDER BY [sort];

在[sort]這個(gè)欄位上建立索引就可以實(shí)現(xiàn)利用索引進(jìn)行order by 優(yōu)化。
2、WHERE + ORDER BY的索引優(yōu)化,形如:

SELECT [column1],[column2],…. FROM [TABLE] WHERE [columnX] = [value] ORDER BY [sort];
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泗阳县| 织金县| 临清市| 庆城县| 阿图什市| 武义县| 石嘴山市| 长宁区| 临汾市| 当雄县| 新晃| 永安市| 土默特左旗| 盐边县| 蛟河市| 留坝县| 商丘市| 大化| 政和县| 吉安市| 墨竹工卡县| 怀化市| 瓮安县| 额敏县| 叶城县| 津南区| 和田县| 堆龙德庆县| 巩留县| 临沭县| 龙岩市| 布尔津县| 奉节县| 宿州市| 花莲县| 平江县| 广汉市| 淮滨县| 昌黎县| 富川| 辉县市|