<?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>Απ: foreign keys and indexes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/13500.aspx</link><pubDate>Wed, 31 May 2006 18:43:54 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:13500</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/13500.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=13500</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;agmarios wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;
&lt;P&gt;Αυτό κατάλαβα κι εγώ, συνοψίζω:&lt;/P&gt;
&lt;P&gt;1. Ορίζοντας Primary Key σε ένα πίνακα δημιουργείται και το αντίστοιχο index&lt;/P&gt;
&lt;P&gt;πχ:&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;create&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;table&lt;/span&gt; fl_country(&lt;br /&gt;   cnId &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;identity&lt;/span&gt;(1,1) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;constraint&lt;/span&gt; countryPK &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;primary&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;key&lt;/span&gt;,&lt;br /&gt;   cnISOcode &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;nchar&lt;/span&gt;(2) &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;not&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;null&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;constraint&lt;/span&gt; uniqueISOcode &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;unique&lt;/span&gt;(cnISOcode),&lt;br /&gt;   cnName &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;nvarchar&lt;/span&gt;(64) &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;not&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;Σωστά.&lt;/P&gt;
&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;agmarios wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;&lt;/P&gt;
&lt;P&gt;2. Ορίζοντας Foreign Key σε έναν δεύτερο πίνακα δεν δημιουργείται Index αλλά βελτιστοποιείται για join με τον πρώτο; &lt;/P&gt;
&lt;P&gt;π.χ.&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;create&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;table&lt;/span&gt; fl_location(&lt;br /&gt;   locId &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;identity&lt;/span&gt;(1,1) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;constraint&lt;/span&gt; locationPK &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;primary&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;key&lt;/span&gt;,&lt;br /&gt;   locCountry &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;constraint&lt;/span&gt; locationFKcountry &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;foreign&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;key&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;references&lt;/span&gt; fl_country(cnId),&lt;br /&gt;   locName &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;nvarchar&lt;/span&gt;(64) &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;not&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;Απλά ορίζεις ένα constraint. Δεν συμβαίνει τίποτα παραπάνω, δεν συμβαίνει καμιά διαδικασία "βελτιστοποίησης".&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;agmarios wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;3. To join τους είναι optimized, δεν χρειάζεται index το locCountry &lt;/P&gt;
&lt;P dir=ltr&gt;&amp;nbsp;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;select&lt;/span&gt; l.locId,l.locName, c.cnName&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;from&lt;/span&gt; fl_location &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;as&lt;/span&gt; l &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;inner&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;join&lt;/span&gt; fl_country &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;as&lt;/span&gt; c &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;on&lt;/span&gt; l.locCountry  = c.cnId&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Τυπικά, δεν υπάρχει κάτι τέτοιο που να λέγεται&amp;nbsp;"optimized join". Τα queries που γράφεις σε συνδυασμό με τα indexes που υπάρχουν είναι optimized ή όχι. Στη συγκεκριμένη περίπτωση, κατά πάσα πιθανότητα, το query σου θα είναι optimized. Δεν χρειάζεται να ορίσεις extra index στο l.locCountry&amp;nbsp;γιατί υπάρχει ήδη αυτό του c.cnId που "βολεύει" τον optimizer περισσότερο καθώς έχει μεγαλύτερο granularity, δηλαδή μοναδικές τιμές, σε σχέση με το l.locCountry&amp;nbsp; που θα έχει επαναλαμβανόμενες τιμές. Βέβαια, όλα αυτά μπορεί να αλλάξουν αν προσθέσεις κάποιο WHERE clause. Γι αυτό, αυτό που παίζει ρόλο δεν είναι μόνο αν υπάρχουν indexes πάνω στα πεδία που γίνεται το join, αλλά στο σύνολό του το query. Και ο καλύτερος τρόπος για να το καταλλάβεις αυτό είναι να μάθεις να διαβάζεις το execution plan του query.&lt;/P&gt;</description></item><item><title>Απ: foreign keys and indexes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/13498.aspx</link><pubDate>Wed, 31 May 2006 18:12:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:13498</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/13498.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=13498</wfw:commentRss><description>&lt;P&gt;Αυτό κατάλαβα κι εγώ, συνοψίζω:&lt;/P&gt;
&lt;P&gt;1. Ορίζοντας Primary Key σε ένα πίνακα δημιουργείται και το αντίστοιχο index&lt;/P&gt;
&lt;P&gt;πχ:&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;create&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;table&lt;/span&gt; fl_country(&lt;br /&gt;   cnId &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;identity&lt;/span&gt;(1,1) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;constraint&lt;/span&gt; countryPK &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;primary&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;key&lt;/span&gt;,&lt;br /&gt;   cnISOcode &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;nchar&lt;/span&gt;(2) &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;not&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;null&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;constraint&lt;/span&gt; uniqueISOcode &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;unique&lt;/span&gt;(cnISOcode),&lt;br /&gt;   cnName &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;nvarchar&lt;/span&gt;(64) &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;not&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;2. Ορίζοντας Foreign Key σε έναν δεύτερο πίνακα δεν δημιουργείται Index αλλά βελτιστοποιείται για join με τον πρώτο; &lt;/P&gt;
&lt;P&gt;π.χ.&lt;/P&gt;
&lt;P dir=ltr style="MARGIN-RIGHT: 0px"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;create&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;table&lt;/span&gt; fl_location(&lt;br /&gt;   locId &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;identity&lt;/span&gt;(1,1) &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;constraint&lt;/span&gt; locationPK &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;primary&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;key&lt;/span&gt;,&lt;br /&gt;   locCountry &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;constraint&lt;/span&gt; locationFKcountry &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;foreign&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;key&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;references&lt;/span&gt; fl_country(cnId),&lt;br /&gt;   locName &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;nvarchar&lt;/span&gt;(64) &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;not&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;/P&gt;
&lt;P dir=ltr&gt;3. To join τους είναι optimized, δεν χρειάζεται index το locCountry &lt;/P&gt;
&lt;P dir=ltr&gt;&amp;nbsp;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;select&lt;/span&gt; l.locId,l.locName, c.cnName&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;from&lt;/span&gt; fl_location &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;as&lt;/span&gt; l &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;inner&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;join&lt;/span&gt; fl_country &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;as&lt;/span&gt; c &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;on&lt;/span&gt; l.locCountry  = c.cnId&lt;/span&gt;&lt;/P&gt;</description></item><item><title>Απ: foreign keys and indexes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/13495.aspx</link><pubDate>Wed, 31 May 2006 17:45:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:13495</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/13495.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=13495</wfw:commentRss><description>&lt;P&gt;Μάλλον δεν ερμηνεύεις σωστά αυτά που λέει το απόσπασμα. Αρχικά λέει ότι μπορείς να κάνεις join σε οποιαδήποτε πεδία (αρκεί βέβαια να έχει νόημα κάτι τέτοιο) χωρίς να έχεις καθορίσει PK/FK constraints. Λέγοντας "optimized" εννοεί ότι εφ'όσον έχουν φτιαχτεί τα&amp;nbsp;PKs και κατ' επέκταση τα indexes, τότε το&amp;nbsp;join θα χρησιμοποιήσει αυτά τα indexes, δηλαδή οι πίνακες έχουν γίνει optimized έτσι ώστε τα συγκεκριμένα queries να χρησιμοποιήσουν τα indexes.&lt;/P&gt;</description></item><item><title>Απ: foreign keys and indexes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/13494.aspx</link><pubDate>Wed, 31 May 2006 17:32:46 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:13494</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/13494.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=13494</wfw:commentRss><description>&lt;P&gt;Ξέρω ότι το θέμα έχει συζητηθεί και στο παρελθόν αλλά κάτι δεν μου πάει καλά, στο BOL του SQL γράφει:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Foreign key columns are often used in join criteria when the data from related tables is combined in queries by matching the column(s) in the FOREIGN KEY constraint of one table with the primary or unique key column(s) in the other table. An index allows Microsoft® SQL Server™ 2000 to find related data in the foreign key table quickly. However, creating this index is not a requirement.&lt;/EM&gt; &lt;/P&gt;
&lt;P&gt;αυτό συμφωνεί με αυτά που λες&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Data from two related tables can be combined even if no PRIMARY KEY or FOREIGN KEY constraints are defined between the tables, but a foreign key relationship between two tables indicates that the two tables have been optimized to be combined in a query that uses the keys as its criteria.&lt;/EM&gt; &lt;/P&gt;
&lt;P&gt;αλλά εδώ τα αλλάζει&amp;nbsp; αφού λέει ότι κάνει optimize τους πίνακες&lt;/P&gt;
&lt;P&gt;υ.γ. ελπίζω κάποια στιγμή να βγάλω άκρη&lt;/P&gt;</description></item><item><title>Απ: foreign keys and indexes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/13490.aspx</link><pubDate>Wed, 31 May 2006 04:58:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:13490</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/13490.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=13490</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;agmarios wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;&lt;BR&gt;Είχα την εντύπωση ότι όταν δηλώνεις ένα foreign key ο sql δημιουργεί μόνος του το αντίστοιχο index.&lt;BR&gt;Στο κάτω - κάτω είναι προφανές ότι θα κάνεις join τους 2 πίνακες (αλλιώς τι relation είναι αυτό). &lt;BR&gt;Νομίζω μάλιστα ότι είναι βελτιστοποιημένος για joins πάνω σε foreign keys.&lt;BR&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Όχι, δεν ισχύει κάτι τέτοιο... Στο παράδειγμα που έδωσε ο Παναγιώτης έχεις τον πίνακα Customers με κλειδί στο CustomerID και τον πίνακα Orders με κλειδί στο πεδίο OrderID κι ένα CustomerID&amp;nbsp;πεδίο που δείχνει τον πελάτη που έχει βάλει την συγκεκριμένη παραγγελία (δεν εξετάζουμε το τι είδος index έχει δημιουργηθεί, αυτό το έχουμε κουβεντιάσει &lt;A href="/cs/forums/11273/ShowPost.aspx"&gt;εδώ&lt;/A&gt;). Τώρα, αν επιχειρήσουμε να φτιάξουμε το PK/FK constraint στο CustomerID θα πάρουμε λάθος αν το CustomerID στον Customers δεν είναι PK. Όπερ σημαίνει ότι το constraint τυγχάνει να βρει τα indexes που έχουν δημιουργηθεί για το PK, δεν δημιουργείται κανένα index κατά τη στιγμή που ορίζεις το constraint.&lt;/P&gt;</description></item><item><title>Απ: foreign keys and indexes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/13489.aspx</link><pubDate>Wed, 31 May 2006 03:51:17 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:13489</guid><dc:creator>evliatsas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/13489.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=13489</wfw:commentRss><description>To να δηλώνεις ένα Foreign Key, είναι ακριβώς η δημιουργία του Relation.&lt;br /&gt;
&lt;br /&gt;
Απλά, επάνω στο Relation μπορείς να ορίσεις κάποια Constraints τα οποία δεν είναι default.</description></item><item><title>foreign keys and indexes</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/13482.aspx</link><pubDate>Wed, 31 May 2006 01:46:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:13482</guid><dc:creator>agmarios</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/13482.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=13482</wfw:commentRss><description>Σε ένα post πιο πάνω βρήκα το εξής:&lt;br&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;pkanavos wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;&lt;br&gt;......&lt;p&gt;Τώρα για τις άλλες ερωτήσεις: Πρώτα η εύκολη. Προσθέτωντας relations
δεν κερδίζεις σε ταχύτητα. Γλυτώνεις όμως μεγάλους μπελάδες καθώς τα
relations δεν επιτρέπουν να μπουν τιμές σε ένα πεδίο που δεν υπάρχουν
και στον parent πίνακα. Π.χ. αν έχεις ένα πίνακα με παραγγελίες Orders
και ένα πίνακα με προμηθευτές Suppliers και ορίσεις ένα foreign key από
το πεδίο SupplierID του Orders στο SupplierID του Suppliers, δεν
μπορείς να βάλεις στον πίνακα Orders μια τιμή SupplierID η οποία δεν
υπάρχει και στον πίνακα Suppliers. Διαφορετικά θα ήσουν υποχρεωμένος να
κάνεις τον έλεγχο εσύ ο ίδιος. &lt;br&gt;&amp;nbsp; &amp;nbsp; Άσε που αν πας να καταλάβεις το σχήμα μιας βάσης χωρίς relations έχεις χάσει από χέρι. &lt;/p&gt;
&lt;p&gt;...........&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Είχα την εντύπωση ότι όταν δηλώνεις ένα foreign key ο sql δημιουργεί μόνος του το αντίστοιχο index.&lt;br&gt;Στο κάτω - κάτω είναι προφανές ότι θα κάνεις join τους 2 πίνακες (αλλιώς τι relation είναι αυτό). &lt;br&gt;Νομίζω μάλιστα ότι είναι βελτιστοποιημένος για joins πάνω σε foreign keys.&lt;br&gt;&lt;br&gt;Μάριος&lt;br&gt;υ.γ. αν έχεις δίκιο έχω πολλούς indexes να προσθέσω&lt;br&gt;</description></item></channel></rss>