De ce poste Comment utiliser ROW_NUMBER dans la procédure suivante ?
Il existe deux versions de réponses où l'une utilise un sub-query
et l'autre utilise un CTE
pour résoudre le même problème.
Alors, quel est l'avantage d'utiliser un CTE (Common Table Expression)
sur une "sous-requête" (donc, plus de lisible ce que la requête fait réellement)
Le seul avantage de l'utilisation d'un CTE
sur sub-select
c'est que je peux en fait nom le site sub-query
. Y a-t-il d'autres différences entre ces deux lorsqu'un CTE est utilisé comme un CTE simple (non récurrent) ?
0 votes
Question dérivée avec une bonne discussion : stackoverflow.com/q/11169550/781695
10 votes
IMO, toute personne qui pense qu'un CTE est moins lisible qu'un gigantesque blob de sous-requêtes entrelacées n'a pas vu le tas d'ordures de requêtes confuses en forme de dents de scie utilisé dans la majorité des systèmes de gestion de données d'entreprise. Les grandes requêtes non triviales sont généralement beaucoup plus faciles à lire plus tard ou par de nouveaux yeux que les sous-requêtes et, au moins dans le cas de Postgres, elles sont magiquement performantes. beaucoup mieux dans de nombreux cas. ([Pour des raisons que je n'ai pas encore comprises[( stackoverflow.com/questions/33731068/ ), car le contraire semble plus probable).