Re: Απορία SQL

Αθανάσιος Οικονόμου athoik at gmail.com
Tue Feb 8 22:47:40 EET 2011


Καλησπέρα σας,


>Ζητείται: Ένα query που να επιστρέφει όλες τις τρέχουσες εκδόσεις
>(δηλαδή την τρέχουσα έκδοση για κάθε σελίδα).

Το παρακάτω μπορεί να δώσει όλα τα τελευταία revisions χωρίς subquery.

Το max_wiki_pageversion (subquery factoring) υπολογίζεται μια φορά. Κάτι που
μπορεί να βοηθήσει σε αργά subqueries.

WITH max_wiki_pageversion AS (
 SELECT page,MAX(version_number) AS max_version_number
 FROM wiki_pageversion
 GROUP BY page
)
SELECT wp.*
FROM wiki_pageversion wp inner join max_wiki_pageversion mwp
ON wp.page = mwp.page
AND wp.version_number = mwp.max_version_number

Το παραπάνω δεν υποστηρίζεται ακόμη από όλα τα DBMS αλλά μπορεί να βοηθήσει
αρκετά αν υποστηρίζεται.

Γενικά δεν νομίζω ότι υπάρχει ένα ερώτημα "περίπλοκο" που να έχει ακριβώς
την ίδια συμπεριφορά σε διαφορετικά DBMS. Ένα join δύο πινάκων με λίγες
εγγραφές το πιθανότερο είναι να βρίσκεται διαρκώς στην Cache και να
εκτελείται αρκετά γρήγορα.

Μερικά links για παραπάνω πληροφορίες για το subquery factoring.

Postgres :
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=07f1264dda0e776a7e329b091c127059bce8cc54
MySQL : http://bugs.mysql.com/bug.php?id=16244
Oracle : http://www.oracle-developer.net/display.php?id=212
MSSql : http://msdn.microsoft.com/en-us/library/ms190766%28SQL.90%29.aspx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hellug.gr/pipermail/linux-greek-users/attachments/20110208/8e3c3553/attachment.html>


More information about the Linux-greek-users mailing list