Frage

Wir entwerfen eine Datenbank, in der ich brauche etwas FK (Fremdschlüssel) zu prüfen, Einschränkungen. Aber es ist nicht beschränkt auf formale Strukturierung und Normalisierung. Wir gehen für sie nur, wenn es irgendwelche gibt Leistung oder Skalierbarkeit Vorteile.

Ich habe durch einige interessante Artikel wurden zu gehen und googeln für den praktischen Nutzen. Hier sind einige Links:

http://www.mssqltips.com/tip.asp?tip=1296

Ich wollte mehr über die Vorteile von FK wissen (abgesehen von der formalen Strukturierung und die berühmten kaskadiert \ Update löscht).

  • FK nicht 'indiziert' standardmäßig so, was die Überlegungen sind, während die Indizierung eines FK?

  • Wie NULL festlegbare Felder zu handhaben, die als Fremdschlüssel abgebildet werden - ist dies erlaubt

  • Neben der Indizierung, funktioniert diese Hilfe Abfrage-Ausführungspläne in SQL-Server bei der Optimierung?

Ich weiß, es gibt noch mehr, aber ich würde Experten zu diesem Thema sprechen bevorzugen. Bitte leitet mich.

War es hilfreich?

Lösung

  • Fremdschlüssel gibt keine Leistung oder Skalierbarkeit Vorteile.
  • Fremdschlüssel erzwingen referenzielle Integrität. Dies kann durch Anheben eines Fehlers einen praktischen Nutzen bieten, wenn jemand Zeilen in Fehler aus der übergeordneten Tabelle zu löschen versucht.
  • Fremdschlüssel werden nicht standardmäßig indiziert. Sie sollten Ihre Fremdschlüssel-Spalten-Index, da dies einen Table-Scan auf dem Tisch Kind vermeidet, wenn Sie Ihre Eltemzeile löschen / aktualisieren.
  • Sie können eine Fremdschlüsselspalte nullable machen und legen Sie den Wert null.

Andere Tipps

Der größte Vorteil ist, dass Ihre Datenbank nicht inkonsistent am Ende, wenn Ihr Buggy-Client-Code versucht, etwas falsch zu machen. Fremdschlüssel sind eine Art von ‚Einschränkung‘, so das ist, wie Sie sollten sie nutzen.

Sie haben keinen „funktional“ Nutzen, werden sie nichts optimieren. Sie haben noch Indizes selbst erstellen, etc. Und ja, können Sie NULL-Werte in einer Spalte, die ein Fremdschlüssel ist.

FK Einschränkungen halten Sie Ihre Daten konsistent. Das ist es. Dies ist der Hauptvorteil. FK Einschränkungen bieten Sie nicht mit einem Performance-Gewinn.

Aber, es sei denn, Sie absichtlich db Struktur denormalized haben, würde ich empfehlen Sie FK Einschränkungen zu verwenden. Der Hauptgrund -. Konsistenz

Ich habe mindestens ein Beispiel auf Netz gelesen, wo es wurde gezeigt, dass Fremdschlüssel tun die Leistung verbessern, da der Optimierer nicht zusätzliche Kontrollen über Tabellen zu tun hat, weil es Daten bestimmte Kriterien erfüllt kennt bereits durch zum FK. Leider habe ich keinen Link, sondern das Blog gab detaillierte Ausgabe der Abfrage plant, es zu beweisen.

Wie bereits erwähnt, sind sie für die Datenintegrität. Jede Leistung „Verlust“ wäre völlig werden von der Zeit ausgelöscht erforderlich ist, um gebrochene Daten zu beheben.

Allerdings könnte es ein indirekter Leistungsvorteil sein.

Für SQL Server mindestens die Spalten in der FK müssen den gleichen Datentyp auf jeder Seite haben. Ohne FK, könnten Sie einen nvarchar Elternteil und ein varchar Kind zum Beispiel. Wenn Sie die zwei Tabellen verbinden, erhalten Sie einen Datentyp-Konvertierungen erhalten, die Leistung töten.

Beispiel: verschiedene varchar Längen einer Verursachung Ausgabe

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top