<?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>SQL Server (και άλλες databases)</title><link>https://www.dotnetzone.gr:443/cs/forums/28/ShowForum.aspx</link><description>Θέματα που αφορούν τον SQL Server (7.0, 2000, 2005) αλλά και Oracle, Access, DB2, MySQL, κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Πολλά ευρετήρια ή ένα;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51210.aspx</link><pubDate>Tue, 02 Jun 2009 05:54:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51210</guid><dc:creator>nikolaosk</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51210.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=51210</wfw:commentRss><description>&lt;br&gt;Σωτήρη, μαζί σου είμαι.... και εγώ τον varchar τον λέω βαρκάρη.... χαχαχα&lt;br&gt;&lt;br&gt;και την f(x) = φώφη&lt;br&gt;&lt;br&gt;και την g(x)= τζούλια....&lt;br&gt;&lt;br&gt;χαχαχα&lt;br&gt;</description></item><item><title>Απ: Πολλά ευρετήρια ή ένα;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51197.aspx</link><pubDate>Tue, 02 Jun 2009 02:18:15 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51197</guid><dc:creator>manosB</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51197.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=51197</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;cap:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;manosB:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Καταρχήν χρησιμοποίησε την διεθνή ορολογία διότι αλλιώς δεν θα σε καταλαβαίνει κανένας.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Χωρίς να θέλω να ακουστώ "περίεργος", νομίζω οτι είναι υπερβολική η παρατήρηση για τη συγκεκριμένη δημοσίευση&amp;nbsp;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Και εγώ πίνακες και πεδία χρησιμοποιώ άλλα το ευρετήριο μου φαίνεται μη δόκιμο ως όρος. Μου χτυπάει άσχημα στο αυτί βρε αδερφέ&amp;nbsp;&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt;. (καθαρά και off topic άποψη)&lt;/div&gt;</description></item><item><title>Απ: Πολλά ευρετήρια ή ένα;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51195.aspx</link><pubDate>Tue, 02 Jun 2009 02:02:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51195</guid><dc:creator>epp1123</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51195.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=51195</wfw:commentRss><description>Ωραίες οι απαντήσεις σας, και θα κινηθώ αφού διαβάσω πρώτα κάποια πράγματα πάνω στα όσα αναφέρατε. Επίσης ξέρεις κάποιος που βόσκει το  Index Tunning Wizard στον MS SQL Server 2008 Express; Δε μπορώ να το βρω με τίποτα.&amp;nbsp; Και πάλι ευχαριστώ για τις απαντήσεις σας.&lt;br&gt;</description></item><item><title>Απ: Πολλά ευρετήρια ή ένα;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51186.aspx</link><pubDate>Mon, 01 Jun 2009 19:42:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51186</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51186.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=51186</wfw:commentRss><description>Επειδή (το ομολογώ!) δεν ήξερα τον όρο SARGable (αν και κατάλαβα διαβάζοντας οτι μόνο το όνομα δεν ήξερα), έψαξα και βρήκα αυτό που πιστεύω θα βοηθήσει όποιον είχε την ίδια απορία με μένα:&amp;nbsp;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://groups.google.com/group/huyuhui/web/a-term-sargable?pli=1"&gt;http://groups.google.com/group/huyuhui/web/a-term-sargable?pli=1&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Πολλά ευρετήρια ή ένα;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51179.aspx</link><pubDate>Mon, 01 Jun 2009 18:27:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51179</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51179.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=51179</wfw:commentRss><description>&lt;P&gt;Να προσθέσω κι εγώ με τη σειρά μου ότι η δημιουργία indexes στη βάση είναι μια «τέχνη» που απαιτεί αρκετή τεχνογνωσία για πετύχεις σωστό αποτέλεσμα. &lt;/P&gt;
&lt;P&gt;Το πρώτο πράγμα που χρειάζεται να ξέρεις είναι το τι queries χρησιμοποιείς. Τι είναι το SARGable και τι το non-SARGable WHERE clause. Τα indexes έχουν άμεση σχέση με τα queries και γι αυτόν το λόγο δεν είναι μια διαδικασία οne-off αλλά κάτι που ελέγχεται και διορθώνεται συχνά. Υπάρχουν περιπτώσεις όπου μπορεί indexes που ευεργετούν ένα SELECT να επιδρούν αρνητικά σε κάποιο άλλο ή πιο πιθανά σε κάποιo INSERT/UPDATE/DELETE.&lt;/P&gt;
&lt;P&gt;Το δεύτερο πράγμα που χρειάζεται να ξέρεις είναι τα inner workings του storage engine, του query-engine και του indexing. Τι είναι το heap, τι είναι το clustered index και τι το non-clustered index. Τι διαφορά έχει ένα INSERT/UPDATE/DELETE όταν γίνεται σε πίνακα χωρίς index, με clustered index και με clustered + non-clustered indexes. Επίσης, θα πρέπει να μπορείς να διαβάζεις και να καταλαβαίνεις ένα execution plan προκειμένου να μπορείς να αποφασίζεις αν ένα index κάνει καλό ή καλό. Το execution time δεν είναι το μοναδικό κριτήριο που παίζει ρόλο σε αυτήν την απόφαση καθώς μιλάμε για μηχανές που προσπαθούν να εξυπηρετίσουν ταυτόχρονα πολλαπλούς χρήστες. Επιπρόσθετα, θα πρέπει να ξέρεις την επίδραση που έχουν τα indexes στα database operations. Τι γίνεται με τα index rebuilds, με τα drops και τα creates. Πως επιδρά ένα index στο μέγεθος της βάσης. Τι γίνεται με τo backup και το restore. &lt;/P&gt;
&lt;P&gt;Τέλος, αυτό που δεν χρειάζεται να ξέρεις είναι διάφοροι «γενικοί» κανόνες που κυκλοφορούν σε forums. Το index tunning είναι tailor made. Υπάρχει μεγάλη άγνοια για το συγκεκριμένο θέμα και το έχω παρατηρήσει όποτε κάνω μάθημα και λέω στους μαθητές μου ότι το clustered index ΔΕΝ μπαίνει σχεδόν ποτέ στο primary key! Οι περίσσοτεροι δεν το δέχονται παρά μόνο αφού τους δείξω το πώς και το γιατί.&lt;/P&gt;
&lt;P&gt;Οπότε τι μπορείς να κάνεις:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Τίποτα. Αν η βάση είναι μικρή και το σίδερο επαρκές, τότε δεν θα δεις ιδιαίτερες διαφορές&lt;/LI&gt;
&lt;LI&gt;Ξεκίνα με το default indexing που κάνει ο SQL Server και στην πορεία τρέξε τον Index Tunning Wizard. Σε γενικές γραμμές, αν δεν χρειάζεσαι κάτι εξεζητημένο, θα σου πει σωστά πράγματα.&lt;/LI&gt;
&lt;LI&gt;Αν διαβάσεις τα παραπάνω και νοιώθεις σίγουρος, πάρε τα πράγματα στα χέρια σου.&lt;BR&gt;&lt;/LI&gt;&lt;/OL&gt;</description></item><item><title>Απ: Πολλά ευρετήρια ή ένα;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51174.aspx</link><pubDate>Mon, 01 Jun 2009 17:44:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51174</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51174.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=51174</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;manosB:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Καταρχήν χρησιμοποίησε την διεθνή ορολογία διότι αλλιώς δεν θα σε καταλαβαίνει κανένας.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Χωρίς να θέλω να ακουστώ "περίεργος", νομίζω οτι είναι υπερβολική η παρατήρηση για τη συγκεκριμένη δημοσίευση. Οι μόνοι Ελληνικοί όροι που αναφέρονται είναι οι λέξεις "πίνακες" (tables), "πεδίο" (field) και "ευρετήρια" (indexes). Για τους πίνακες και τα πεδία, πιστεύω οτι όλοι το έχουμε συνηθίσει, ενώ για τα indexes δεν ακούγεται και τόσο άσχημη η λέξη "ευρετήριο". Σίγουρα, όταν κάποιοι όροι χρησιμοποιούνται ευρέως σε διεθνή βάση, το να αναφέρουμε τις αντίστοιχες (Ελληνικής πανεπιστημιακής καταβολής, συνήθως) ορολογίες στα Ελληνικά, ειδικά όταν δεν είναι απόλυτα δόκιμες, μπορεί να προκαλέσει σύγχυση, αλλά εδώ πιστεύω τα πράγματα είναι αρκετά ξεκάθαρα.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Φυσικά, αυτό (εκτός του οτι είναι off-topic και ζητώ συγνώμη για αυτό), αποτελεί καθαρά προσωπική μου άποψη. Στις προσωπικές μου κουβέντες πάντως εγώ μιλάω για "τραπέζια" :)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Πολλά ευρετήρια ή ένα;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51173.aspx</link><pubDate>Mon, 01 Jun 2009 17:30:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51173</guid><dc:creator>manosB</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51173.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=51173</wfw:commentRss><description>Καταρχήν χρησιμοποίησε την διεθνή ορολογία διότι αλλιώς δεν θα σε καταλαβαίνει κανένας.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Η λύση του να βάζω παντου indexes είναι η εύκολη λύση για να βελτιώσουμε το performance σε κάποια report της εφαρμογής χωρίς να καταλαβαίνουμε ότι χάνουμε συνέχεια performance στο insert kai update. Κάποια στιγμή έχουμε βαρύνει τόσο πολύ την βάση που περισσότερο μοιάζει με IQ παρά με RDBMS.&lt;img src="http://www.dotnetzone.gr/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Είναι καλή πρακτική να μην βάζουμε indexes σε ένα μόνο πεδίο. Αλλά να χρησιμοποιούμε μια οικογένεια πεδίων που στατιστικά κάνουν περισσότερο εμφάνιση στα where μας.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Πολλά ευρετήρια ή ένα;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51169.aspx</link><pubDate>Mon, 01 Jun 2009 07:48:42 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51169</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51169.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=51169</wfw:commentRss><description>Ολα εξαρτώνται από το είδος των πινάκων και τα queries που κάνεις πάνω σε αυτούς.&amp;nbsp;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Για παράδειγμα, αν ένας πίνακάς σου είναι write-intensive, δεν θα αποτελούσε καλή πρακτική να δημιουργήσεις πολλα ευρετήρια πάνω του γιατί θα καθυστερούν τα updates/inserts.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Από την άλλη, για να απαντήσω στο ερώτημά σου, το οποίο είναι "αυτόνομα ευρετήρια για κάθε πεδίο ή σύνθετα ευρετηρια", η απάντηση βρίσκεται στα select queries που κάνεις συνήθως. Είθισται να φτιάχνουμε ευρετήρια τα οποία μας βοηθούν στα SELECT μας, ήτοι στο WHERE clause των SELECT statements μας. (EDIT: Κακώς αναφέρω μόνο τα SELECT statements, γενικότερα όπου έχουμε filtering με WHERE έχει νόημα) Αν χρησιμοποιείς συνθήκες στα WHERE clauses σου για ένα πεδίο τη φορά, τότε τα μονά ευρετήρια (ένα για κάθε πεδίο) ΜΟΝΟ για τα πεδία που χρησιμοποιείς στο WHERE clause σου, ειναι μια προτεινόμενη λύση. Από την άλλη, αν το WHERE clause σου χρησιμοποιεί συχνότερα σύνθετα κριτήρια, τότε καλό είναι να τα απομονώσεις, και να φτιάξεις ένα covering index που θα καλύπτει τις αναζητήσεις με τα συγκεκριμένα κριτήρια.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Αυτό που δεν πρέπει να κάνεις με τίποτα, είναι να φτιάξεις όσα περισσότερα ευρετήρια μπορείς, απλά γιατι μπορείς! Τα updates και τα inserts σου θα καθυστερούν, ενώ δεν θα έχεις πραγματικό όφελος αν στα selects σου δεν αξιοποιούνται.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Πολλά ευρετήρια ή ένα;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/51168.aspx</link><pubDate>Mon, 01 Jun 2009 03:43:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:51168</guid><dc:creator>epp1123</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/51168.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=51168</wfw:commentRss><description>Καλησπέρα σας και καλό καλοκαίρι. Έχω 7 πινάκες όπου ο καθένας έχει, κατά μέσο όρο 4 με 5 πεδία. Εκτός από το πεδίο που είναι id σε κάθε πίνακα, έχω και άλλα πεδία τα οποία θα τα κάνω indexed. Το ερώτημα είναι αν&amp;nbsp; θα πρέπει για κάθε πεδίο να φτιάξω και ένα ευρετήριο, ή να φτιάξω ευρετήριο που θα έχει περισσότερα από ένα ευρετήρια. Ποιο είναι πιο σωστό και γιατί; Ευχαριστώ&lt;br&gt;</description></item></channel></rss>