当前位置:网站首页>MySQL has no collation factor of order by
MySQL has no collation factor of order by
2022-07-02 07:18:00 【Software development heart】
Before experiencing the problems encountered in production , In my memory, I think MySQL Of SELECT In none order by Will press ID Sort returns ~
But it's not !!!
1. The following chapter is reproduced from : https://segmentfault.com/a/1190000016251056
I met one at work two days ago Mysql The question of sequencing , Without adding order by When , The order of acquired data is random , Instead of sorting by primary key . I used to mysql The default sorting of is by primary key . This is not the case .
①. Create a test database :
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` char(100) DEFAULT NULL,
`age` char(5) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `age` (`age`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
②. Insert some data :
INSERT INTO test VALUES(NULL,' Zhang San ','5');
INSERT INTO test VALUES(NULL,' Li Si ','15');
INSERT INTO test VALUES(NULL,' Wang Wu ','5');
INSERT INTO test VALUES(NULL,' Zhao Xin ','15');
INSERT INTO test VALUES(NULL,' Dema ','20');
INSERT INTO test VALUES(NULL,' Prince ','5');
INSERT INTO test VALUES(NULL,' mywood ','17');
INSERT INTO test VALUES(NULL,' Hero ','22');
INSERT INTO test VALUES(NULL,' Water Margin ','18');
INSERT INTO test VALUES(NULL,' Xiaofang ','17');
INSERT INTO test VALUES(NULL,' Lao Wang ','5');
③. Inquire about 5 Bar record :select * from test limit 5:
+----+------+------+
| id | name | age |
+----+------+------+
| 1 | Zhang San | 5 |
| 2 | Zhang San | 5 |
| 3 | Li Si | 15 |
| 4 | Wang Wu | 5 |
| 5 | Zhao Xin | 15 |
+----+------+------+
5 rows in set (0.00 sec)
Now we only need to query two fields select id,age from test limit 5:
+----+------+
| id | age |
+----+------+
| 3 | 15 |
| 5 | 15 |
| 8 | 17 |
| 11 | 17 |
| 10 | 18 |
+----+------+
5 rows in set (0.00 sec)
Of two query statements Explain Implementation plan :
mysql> explain select * from test limit 5 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: test
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 12
Extra:
1 row in set (0.00 sec)
mysql> explain select id,age from test limit 5 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: test
type: index
possible_keys: NULL
key: age
key_len: 16
ref: NULL
rows: 12
Extra: Using index
1 row in set (0.00 sec)
Conclusion :
MySQL Not given order by conditional , The order of the data results obtained is related to the query column . Because in different query columns , Different index conditions may be used .Mysql When using different indexes , The order of data obtained is different . This may be the same as Mysql Indexing mechanism , And the use of indexes . To avoid that , In future projects , Remember to add order by
2. seek truth
Refer to some personal and official articles , Roughly understand that in none order by Under the circumstances , influence MySQL The factors of sorting rules are :
- SELECT Columns to query
- Index method
- physical position , That is, record the sequence of insertion rowid( Not ID The order of )
- Storage engine ,InnoDB、MyISM
[email protected] Of opinion :
https://stackoverflow.com/questions/8746519/sql-what-is-the-default-order-by-of-queries

MySQL Official website answer :
边栏推荐
- 【Ranking】Pre-trained Language Model based Ranking in Baidu Search
- Message queue fnd in Oracle EBS_ msg_ pub、fnd_ Application of message in pl/sql
- Sqli labs customs clearance summary-page2
- IDEA2020中PySpark的两表关联(字段名相同)
- ORACLE EBS 和 APEX 集成登录及原理分析
- Yaml file of ingress controller 0.47.0
- Proteus -- RS-232 dual computer communication
- Oracle EBs and apex integrated login and principle analysis
- php中计算两个日期之前相差多少天、月、年
- php中树形结构转数组(拉平树结构,保留上下级排序)
猜你喜欢
随机推荐
CSRF攻击
Use of interrupt()
oracle EBS标准表的后缀解释说明
Oracle 11.2.0.3 handles the problem of continuous growth of sysaux table space without downtime
Principle analysis of spark
php中生成随机的6位邀请码
Basic knowledge of software testing
Oracle rman半自动恢复脚本-restore阶段
【信息检索导论】第七章搜索系统中的评分计算
ORACLE EBS ADI 开发步骤
Oracle RMAN automatic recovery script (migration of production data to test)
Go package name
【Ranking】Pre-trained Language Model based Ranking in Baidu Search
pm2简单使用和守护进程
TCP攻击
CAD secondary development object
ssm+mysql实现进销存系统
Write a thread pool by hand, and take you to learn the implementation principle of ThreadPoolExecutor thread pool
中年人的认知科普
spark sql任务性能优化(基础)









