欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql的order by怎么走索引

林國瑞2年前15瀏覽0評論

MySQL的order by語句用于根據(jù)指定的列對查詢結(jié)果進行排序。然而,當(dāng)查詢的數(shù)據(jù)量較大時,排序操作會極大地影響查詢性能。因此,如何使order by語句能夠走索引,也就成為了MySQL優(yōu)化的一個非常重要的方面。

如果我們要讓order by語句走索引,就需要在創(chuàng)建索引時特別注意。一般來說,MySQL的B+樹索引是從左到右依次按照索引列的值進行排序的。因此,在創(chuàng)建索引時需要考慮索引列的順序,讓經(jīng)常用作排序的列排在較左的位置。例如,如果我們有以下的一張表:

CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`age` int(11) NOT NULL,
`score` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_name_age` (`name`,`age`),
KEY `idx_score` (`score`)
);

如果我們要按照分數(shù)進行排序,就可以利用idx_score索引,例如:

SELECT * FROM student ORDER BY score DESC;

這時MySQL會利用idx_score索引直接完成排序操作。

如果我們需要按照姓名和年齡進行排序,則可以利用idx_name_age索引:

SELECT * FROM student ORDER BY name, age;

這時MySQL會利用idx_name_age索引直接完成排序操作。

需要注意的是,如果排序列中有NULL值,那么默認情況下會被排在最后面。如果我們想要將NULL值排在最前面,可以使用如下的語法:

SELECT * FROM student ORDER BY score IS NULL, score DESC;

這樣MySQL會先保證NULL值排在最前面,然后再按照分數(shù)進行排序。

上一篇mysql的pxc