我们有两个类似于简单标记记录结构的表格如下(实际上它要复杂得多,但这是问题的本质):
tag (A.a) | recordId (A.b)
1 | 1
2 | 1
2 | 2
3 | 2
....
Run Code Online (Sandbox Code Playgroud)
和
recordId (B.b) | recordData (B.c)
1 | 123
2 | 666
3 | 1246
Run Code Online (Sandbox Code Playgroud)
问题是获取具有特定标记的有序记录.显而易见的方法是使用简单的连接和索引(PK)(Aa,Ab),(Ab),(PK)(Bb),(Bb,Bc),如下所示:
select A.a, A.b, B.c from A join B on A.b = B.b where a = 44 order by c;
Run Code Online (Sandbox Code Playgroud)
但是,这会给文件排序带来不愉快的结果:
+----+-------------+-------+------+---------------+---------+---------+-----------+------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+---------+---------+-----------+------+----------------------------------------------+
| 1 …Run Code Online (Sandbox Code Playgroud)