Bonjour,
j'ai écrit une requête qui vise à remonter les dernières de quelques tables SQL
différentes. j'utilise pour cela une union. Les tables TableA et TableB
contiennent quelques centaines de milliers de lignes. Elles sont alimentés en
permanence.
J'ai peur que MySQL cré une liste intermédiaire contenant la somme des entrées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 SELECT type, id, date, name FROM ( SELECT 1 AS type, TableA.id AS id, TableA.last_update AS date, TableA.element1 AS name FROM TableA UNION SELECT 2 AS type, TableB.id AS id, TableB.last_update AS date, TableB.element2 AS name FROM TableB ) AS result_set ORDER BY date DESC LIMIT 0,40
de mes deux tables avant de pouvoir les trier et extraire les 40 premières
lignes. Je ne peux pas valider ce que j'avance car ma base de tests ne contient
pas autant de lignes.
Ce mode de fonctionnement m'inquiète. Je souhaiterai faire une requête dans
l'esprit de celle qui suit, mais l'interpréteur SQL la refuse.
Mon problème est peut être un cas typique SQL. Quelqu'un aurait une solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 SELECT type, id, date, name FROM ( SELECT 1 AS type, TableA.id AS id, TableA.last_update AS date, TableA.element1 AS name FROM TableA ORDER BY TableA.last_update DESC LIMIT 0, 40 UNION SELECT 2 AS type, TableB.id AS id, TableB.last_update AS date, TableB.element2 AS name FROM TableB ORDER BY TableB.last_update DESC LIMIT 0, 40 ) AS result_set_2 ORDER BY date DESC LIMIT 0, 40
ou une best practice pour ce type de requêtes ?
Merci d'avance.
Partager