<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Πρώτα Βήματα - Βάσεις δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/73/ShowForum.aspx</link><description>Για όσους κάνουν τα πρώτα τους βήματα στην Microsoft Access ή τον SQL Server, ή γενικότερα στη θεωρία βάσεων δεδομένων.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: The maximum number of tables in a query (260) was exceeded</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/50397.aspx</link><pubDate>Fri, 01 May 2009 05:37:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:50397</guid><dc:creator>Bill </dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/50397.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=50397</wfw:commentRss><description>Καταλαβαίνω απόλυτα και έχεις δίκαιο και στο πρώτο post που έγραψες και επίσης είναι δεδομένη η αναγνώριση της εμπειρίας στο πρόσωπο σου τουλάχιστον σε αύτο το forum.Απλά ίσως το διατύπωσα λάθος και ζητώ συγνώμη αν σε πρόσβαλα.Ναι το query σηκώνει βελτίωση δε λέω. Απλά θα ήθελα να έχω όλες τις εναλλκτικές απόψεις πρίν πάρω μια απόφαση και επειδή ήξερα ότι απο την αρχή θα έγραφε κάποιος ότι πρέπει να κάνω αλλαγή στο query για το λόγο αυτό είπα ας αποκλείσουμε αυτό το ενδεχόμενο.&lt;br&gt;&amp;nbsp;&amp;nbsp; Στο θέμα μας τώρα. Βασικά δεν κατέληξα σε κάτι αλλά εξετάζω τις επιλογές που μου έδωσες εσύ και ο Kelman.Εκείνο που έχω να πώ είναι ότι πολύ συνάδελφοι σε ξένα forums έχουνε το ίδιο πρόβλημα με τον SQL 2000 κι όταν ένα προϊον δεν το αποσύρει η αγόρα εμείς είμαστε αναγκασμένοι να δείνουμε λύσεις.&lt;br&gt;</description></item><item><title>Απ: The maximum number of tables in a query (260) was exceeded</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/50395.aspx</link><pubDate>Fri, 01 May 2009 04:06:06 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:50395</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/50395.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=50395</wfw:commentRss><description>Δεν είναι θεωρία αλλά πείρα. Έχω αντιμετωπίσει και στο παρελθόν τέτοια κατάσταση και έχω δουλέψει και με βάσεις με πολλές εκατοντάδες πίνακες. Σε όποια βάση και να δουλέψεις, ένα query το οποίο χρησιμοιεί 260 πίνακες είναι προβληματικό. Υπάρχουν πολύ μεγαλύτερα συστήματα όπως το SAP, με χιλιάδες πίνακες, τα οποία δεν πλησιάζουν καν το όριο των 260 πινάκων. Πέρα από υπερβολική πολυπλοκότητα ένα τέτοιο query θα έχει και κακό performance, ανεξαρτήτως βάσης, καθώς θα κλειδώσει πάρα πολλούς πίνακες για μεγάλο χρονικό διάστημα και θα μειώσει πάρα πολύ τα transactions που μπορούν να γίνουν ανά λεπτό.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Μία λύση είναι όντως να δουλέψεις με temporary πίνακα, και αφού δέχεσαι να το κάνεις αυτό υποθέτω ότι το query μπορεί τελικά να αλλάξει. Μία πολύ καλύτερη λύση, αυτή που χρησιμοποιείται σε όσες εφαρμογές έχουν πολλούς πίνακες και μεγάλο όγκο δεδομένων, είναι να φτιάξεις μία ξεχωριστή βάση με σχήμα φτιαγμένο ειδικά για reporting. Είτε περιοδικά, είτε μέσω κάποιου trigger ή queue, περνάς τις αλλαγές από την transactional στην reporting βάση. Αυτή είναι και η λύση που χρησιμοποιούν και μεγάλες εφαρμογές όπως το SAP αλλά και μικρότερες όπως π.χ. ο Project Server. Έτσι πετυχαίνεις ταχύτητα τόσο για την transactional όσο και για την reporting database αλλά και πολύ ευκολότερη δημιουργία των reports. Τέλος μπορείς να χρησιμοποιήσεις τα Analysis Services για να πετύχεις ακόμα μεγαλύτερη ταχύτητα σε reports που απαιτούν aggregations π.χ. σε επίπεδο εβδομάδας-μήνα-χρόνου, πόλης-νομού-χώρας και όλων των συνδυασμών που μπορείς να φανταστείς.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;Το μόνο στο οποίο έχεις ένα μερικό δίκιο είναι στο ότι η Microsoft δεν πρόκειται να κάνει τίποτε παραπάνω για τον SQL Server 2000, όχι λόγω αδυναμίας αλλά επειδή το προϊόν έχει αποσυρθεί πλέον.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Απ: The maximum number of tables in a query (260) was exceeded</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/50386.aspx</link><pubDate>Thu, 30 Apr 2009 19:05:42 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:50386</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/50386.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=50386</wfw:commentRss><description>E, καλά όμως, μην γράφουμε ό,τι θέλουμε κι όλας... Το έχει επιλύσει ήδη από τον SQL Server 2005. Από εκεί και πέρα, δεν είπες αν πρόκειται για reporting σκοπούς. Γιατί σε αυτήν την περίπτωση η προτεινόμενη λύση είναι είτε να φτιαχθεί μια δεύτερη βάση που θα περιέχει τα data σε κατάλληλη μορφή denormalized, είτε ένα data mart.</description></item><item><title>Απ: The maximum number of tables in a query (260) was exceeded</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/50385.aspx</link><pubDate>Thu, 30 Apr 2009 18:56:42 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:50385</guid><dc:creator>Bill </dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/50385.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=50385</wfw:commentRss><description>Είναι πολύ εύκολη η θεωρία αλλά δεν εχουμε κανένα query καρκίνο απλά έχουμε μερικά βασικά views και αρκετούς πίνακες καταλαβαίνεις ότι η βάση είναι μεγάλη με πολλά υποσυστήματα. Η αδυναμία της Microsoft στο να επιλύση το συγκεκριμένο πρόβλημα δεν σημαίνει ότι πρέπει αναγκαστικά να έχει προβλημα το query.Επίσης μου ακούγεται καλή ιδέα το παίξω με temporary πίνακα θα το δοκιμάσω.&lt;br&gt;</description></item><item><title>Απ: The maximum number of tables in a query (260) was exceeded</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/50383.aspx</link><pubDate>Thu, 30 Apr 2009 18:37:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:50383</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/50383.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=50383</wfw:commentRss><description>Γιατί να θεωρηθεί?&amp;nbsp;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Όταν εμπλέκεις 260 πίνακες σε ένα query σημαίνει δύο πράγματα και ουσιαστικά ένα. Έχεις ένα πάρα -πάρα πολύ κακό query. Αυτό μπορεί να συμβαίνει είτε επειδή κάποιος έφτιαξε ένα τεράστιο query και έβαλε μέσα και τους 260 πίνακες, ή ότι μία σειρά προγραμματιστών αντί να φτιάχνουν κάθε φορά σωστά queries, έπιαναν ένα view που βόλευε ελαφρώς και το έχωναν σε άλλο με αποτέλεσμα κάποια στιγμή να φτάσει το όριο των 260 πινάκων, πολλοί από τους οποίους επαναλαμβάνοντας 7-8 φορές.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Όπως και να έχει, έχεις ένα query-καρκίνο και καμμία ασπιρίνη δεν πρόκειται να σε σώσει αν δεν το ξεφορτωθείς. Το πρόβλημα δεν είναι της Microsoft ούτε του 2000. Μπορεί ο SQL 2005 και ο 2008 να έχουν αυξήσει το όριο, αλλά με τέτοιο κακό κώδικα, σύντομα θα ξεπεράσετε οποιοδήποτε είναι το νέο όριο.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Η μόνη λύση είναι να σταματήσετε άμεσα να χώνετε views το ένα μέσα στο άλλο για λόγους "ευκολίας" και να καθαρίσετε το σχήμα της βάσης. Τα νέα views θα πρέπει να γράφονται χτυπώντας είτε τους πίνακες είτε ένα σετ από συγκεκριμένα, βασικά views.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Υ.Γ. Αν μου πεις και ότι δουλεύεις σε εταιρεία που φτιάχνει χρηματιστηριακό software ...&lt;/div&gt;</description></item><item><title>Απ: The maximum number of tables in a query (260) was exceeded</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/50382.aspx</link><pubDate>Thu, 30 Apr 2009 18:36:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:50382</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/50382.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=50382</wfw:commentRss><description>&lt;P&gt;Το join πάνω από 260 πινάκων υποδηλώνει από μόνο του ένα πρόβλημα. Τώρα, δυο πιθανές λύσεις (μιας και δεν γίνεται να πειράξεις το query) είναι:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Αναβάθμιση σε SQL Server 2005/2008&amp;nbsp;που υποστηρίζει πολύ περισσότερους πίνακες (δεν θυμάμαι πόσους αυτή τη στιγμή)&lt;/LI&gt;
&lt;LI&gt;Δημιουργία temp πίνακα που να περιέχει τα data από τους πρώτους 260 πίνακες&amp;nbsp;και&amp;nbsp;join των υπολοίπων σε αυτόν&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Πάντως, ειδικά αν πρόκειται για reporting, η δεύτερη λύση μου φαίνεται αρκετά εφικτή. Ειδικά αν συνδυαστεί με ένα loading του temp πίνακα κατά τις&amp;nbsp;low-utilization ώρες που λειτουργεί ο server. Παράλληλα, θα διευκολυνθεί ο server όταν θα πρέπει να τρέξει αυτά τα τεράστια queries.&lt;/P&gt;</description></item><item><title>The maximum number of tables in a query (260) was exceeded</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/50378.aspx</link><pubDate>Thu, 30 Apr 2009 18:22:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:50378</guid><dc:creator>Bill </dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/50378.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=50378</wfw:commentRss><description>&amp;nbsp; Γνωρίζει κανείς πως μπορούμε να ξεπεράσουμε το παραπάνω πρόβλημα του SQL Server 2000 + SP4. Η Microsoft για το παραπάνω πρόβλημα έιχε βγάλει το SP4 αλλά απλά απο 256 tables το κάνει 260 το όριο πινάκων σε ένα select statement.Επίσης να θεωρηθεί ότι δεν γίνεται να αλλάξουμε το view / query.Στο google που έψαξα κάποιοι κάνουνε μια stored procedure αλλά δεν κατάλαβα και πολλά.Ευχαρηστώ&lt;br&gt;&lt;br&gt;</description></item></channel></rss>