mysql升序降序怎么操作

这是一个陷阱,不要相信默认排序,始终按升序排序。

实用提醒:排序前一定要对相关列建立索引,以提高查询效率。

mysql如何实现多字段排序

你好兄弟,最近在做数据库优化吗?我之前在这个领域经历过很多陷阱。
记得有一次我负责一个项目,要对学生信息表按照年级和成绩进行排序,但是出了问题。

那年是2 01 9 年,项目在杭州某公司,学生信息表中有几百万条记录。
当时我使用的SQL是这样的:
从学生中选择,按年级 ASC、分数 DESC 排序;
我正在考虑按年级升序排序,如果它们处于同一年级,则按分数降序排列。
结果,速度非常慢。
查看执行计划,发现它执行了全表扫描,然后对磁盘文件进行了排序。
这就是所谓的滞后。

我开始寻找原因,后来发现是因为索引没有设置正确。
当时我认为只建立一个关于成绩和分数的索引就可以了。
原来顺序很重要,必须和ORDER BY中的顺序一致,否则索引就不起作用。

我很快调整了指数,创建了成绩和分数的综合指数:
创建索引 idx_grade_score ON 学生(成绩,分数);
然后我优化了SQL语句,只询问必填字段:
从学生中选择 ID、姓名、成绩、分数 ORDER BY 成绩 ASC、分数 DESC;
这会进行得更快。
后来我还发现,如果数据量特别大,MySQL会通过文件来排序。
这个操作非常消耗资源,所以我尽量减少排序的数据量。

还有一点是处理NULL值的问题。
默认情况下,NULL 值首先排序,有时我们需要调整这种行为。
我使用以下SQL来调整:
SET sql_mode='...,NULL LOAD';
这样 NULL 值将排在最后。

总之,多字段排序虽然看似简单,但实际上有很多细节需要考虑。
通过这个项目我学到了很多。
以后再遇到这样的问题,我就会更有信心了。
呵呵,分享给大家,希望对大家有帮助!

关于MYSQL语句查询排序的问题

哎,我查数据库的时候,结果乱七八糟,没有任何顺序。
直到那时我才意识到我必须自己组织。
这个 ORDER BY 子句效果很好。
只需几行代码,我就可以按照我想要的顺序对数据进行排序。
比如我查了2 02 2 年某城市的销售数据,发现一共卖出了1 000多件,总数肯定有几十万。
我想按销售额从高到低对商品进行排序,所以我写了 SELECT FROM sales ORDER BY amount DESC。
结果立刻就清楚了。
最有利可图的交易都在前面。
我当时就很困惑,怎么安排呢?再想一想,原来默认的顺序是升序的。
我添加了 DESC 关键字,它做了相反的事情,从大到小对它们进行排序。
哎,这个技术活儿得慢慢学啊。