Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Abfrageleistung – Clustered-Index-Suche

Ich stimme @marc_s und @KM zu, dass dieses großartige Design von Anfang an zum Scheitern verurteilt ist.

Millionen von Microsoft-Entwicklerstunden sind in den Aufbau und die Feinabstimmung einer robusten und leistungsstarken Datenbank-Engine geflossen, aber Sie werden alles neu erfinden, indem Sie alles in eine kleine Anzahl generischer Tabellen stopfen und alles neu implementieren, was SQL Server bereits ist entwickelt, um für Sie zu tun.

SQL Server verfügt bereits über Tabellen, die Namen von Entitäten, Namen von Spalten usw. enthalten. Die Tatsache, dass Sie normalerweise nicht direkt mit diesen Systemtabellen interagieren, ist eine gute Sache:Das nennt man Abstraktion. Und es ist unwahrscheinlich, dass Sie diese Abstraktion besser implementieren als SQL Server.

Am Ende des Tages werden mit Ihrem Ansatz (a) selbst die einfachsten Abfragen monströs sein; und (b) Sie werden niemals an die optimale Leistung herankommen, da Sie auf die gesamte Abfrageoptimierung verzichten, die Sie sonst kostenlos erhalten würden.

Ohne mehr über Ihre Anwendung oder Ihre Anforderungen zu wissen, ist es schwierig, konkrete Ratschläge zu geben. Aber ich würde vorschlagen, dass eine gute alte Normalisierung einen langen Weg zurücklegen würde. Jede gut implementierte, nicht-triviale Datenbank hat viele Tabellen; Zehn Tabellen plus zehn xtab-Tabellen sollten Sie nicht abschrecken.

Und haben Sie keine Angst vor der Generierung von SQL-Code, um gemeinsame Schnittstellen über unterschiedliche Tabellen hinweg zu implementieren. Ein bisschen kann viel bewirken.