Καλησπέρα σας,<br><br><br>>Ζητείται: Ένα query που να επιστρέφει όλες τις τρέχουσες εκδόσεις<br>
>(δηλαδή την τρέχουσα έκδοση για κάθε σελίδα).<br><br>Το παρακάτω μπορεί να δώσει όλα τα τελευταία revisions χωρίς subquery. <br><br>Το max_wiki_pageversion (subquery factoring) υπολογίζεται μια φορά. Κάτι που μπορεί να βοηθήσει σε αργά subqueries.<br>
<br>WITH max_wiki_pageversion AS (<br> SELECT page,MAX(version_number) AS max_version_number<br> FROM wiki_pageversion<br> GROUP BY page<br>)<br>SELECT wp.* <br>FROM wiki_pageversion wp inner join max_wiki_pageversion mwp<br>
ON wp.page = mwp.page<br>AND wp.version_number = mwp.max_version_number<br><br>Το παραπάνω δεν υποστηρίζεται ακόμη από όλα τα DBMS αλλά μπορεί να βοηθήσει αρκετά αν υποστηρίζεται.<br><br>Γενικά δεν νομίζω ότι υπάρχει ένα ερώτημα "περίπλοκο" που να έχει ακριβώς την ίδια συμπεριφορά σε διαφορετικά DBMS. Ένα join δύο πινάκων με λίγες εγγραφές το πιθανότερο είναι να βρίσκεται διαρκώς στην Cache και να εκτελείται αρκετά γρήγορα.<br>
<br>Μερικά links για παραπάνω πληροφορίες για το subquery factoring.<br><br>Postgres : <a href="http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=07f1264dda0e776a7e329b091c127059bce8cc54">http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=07f1264dda0e776a7e329b091c127059bce8cc54</a><br>
MySQL : <a href="http://bugs.mysql.com/bug.php?id=16244">http://bugs.mysql.com/bug.php?id=16244</a><br>Oracle : <a href="http://www.oracle-developer.net/display.php?id=212">http://www.oracle-developer.net/display.php?id=212</a><br>
MSSql : <a href="http://msdn.microsoft.com/en-us/library/ms190766%28SQL.90%29.aspx">http://msdn.microsoft.com/en-us/library/ms190766%28SQL.90%29.aspx</a><br><br><br>