SQL Server Foreign Key-Einschränkung nutzen
Wir entwerfen einer Datenbank in die ich beachten muss einige FK(foreign key)
- Einschränkungen. Es ist aber nicht beschränkt auf
die formale Strukturierung und Normalisierung.
Wir gehen für Sie nur, wenn Sie alle
performance oder Skalierbarkeit Vorteile.
Ich habe schon durch einige interessante Artikel und googeln für praktische Vorteile. Hier sind einige links:
http://www.mssqltips.com/tip.asp?tip=1296
Wollte ich mehr wissen über die Vorteile von FK (abgesehen von der formalen Strukturierung und der berühmten kaskadierte löschen\update).
-
FK sind nicht 'indiziert' standardmäßig also, was sind die überlegungen, während die Indizierung von FK?
-
Umgang nullable Felder zugeordnet sind, die als foreign key - ist das erlaubt?
-
Abgesehen von der Indizierung aus, bedeutet das die Optimierung der Abfrage-Ausführungspläne in SQL-Server?
Ich weiß, es gibt mehr, aber ich würde lieber die Experten sprechen auf diesem. Bitte führe mich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Vorteil, dass Ihre Datenbank nicht inkonsistent, wenn Sie Ihre buggy-client-code versucht, etwas falsch zu machen. Foreign keys sind eine Art von "Einschränkung", so, wie Sie sollten Sie verwenden.
Sie haben keine "Funktion" nutzen, werden Sie nicht etwas optimieren. Sie haben noch Indizes erstellen sich selbst, usw. Und ja, Sie können NULL-Werte in einer Spalte, die einen Fremdschlüssel.
FK-Einschränkungen halten Sie Ihre Daten konsistent. Das ist es. Dies ist der Hauptvorteil.
FK-constraints nicht alle performance-Gewinn.
Aber, es sei denn, Sie haben denormalisierten auf Zweck db-Struktur, würd ich dir empfehlen die Verwendung von FK-constraints. Der Hauptgrund - Konsistenz.
Habe ich gelesen, mindestens ein Beispiel im Netz, wo es wurde gezeigt, dass die Fremdschlüssel tun verbessern die Leistung, da der Optimierer nicht, müssen zusätzliche Prüfungen über Tabellen, weil es weiß Daten bestimmte Kriterien erfüllt schon aufgrund der FK. Sorry, ich habe nicht einen link, aber den blog gab detaillierte Ausgabe der Abfrage Pläne, um es zu beweisen.
Wie bereits erwähnt, sind Sie für die Integrität der Daten. Alle performance - "Verlust" wäre völlig ausgelöscht durch die Zeit, die erforderlich ist, um fix broken Daten.
Jedoch, es könnte eine indirekte Leistung profitieren.
Für SQL Server mindestens die Spalten im Fremdschlüssel müssen den gleichen Datentyp auf jeder Seite. Ohne FK, könnten Sie ein nvarchar Elternteil und einem varchar Kind zum Beispiel. Wenn Sie Mitglied werden, 2 Tabellen, erhalten Sie eine datatype-Konvertierungen, die töten kann-Leistung.
Beispiel: verschiedene varchar Längen verursachen ein Problem