sql >> Databáze >  >> RDS >> Sqlserver

Výkon dotazů SQL Server – hledání seskupeného indexu

Souhlasím s @marc_s a @KM, že tento velkolepý design je od začátku odsouzen k záhubě.

Miliony vývojářských hodin společnosti Microsoft věnovaly budování a dolaďování robustního a výkonného databázového stroje, ale vše znovu objevíte tím, že vše nacpete do malého počtu obecných tabulek a znovu implementujete vše, čím SQL Server již je. navržený tak, aby to udělal za vás.

SQL Server již má tabulky obsahující názvy entit, názvy sloupců a tak dále. Skutečnost, že běžně neinteragujete přímo s těmito systémovými tabulkami, je dobrá věc:Říká se tomu abstrakce. A je nepravděpodobné, že při implementaci této abstrakce odvedete lepší práci než SQL Server.

Na konci dne s vaším přístupem (a) budou i ty nejjednodušší dotazy obludné; a (b) nikdy se nepřiblížíte optimálnímu výkonu, protože se vzdáváte veškeré optimalizace dotazů, kterou byste jinak získali zdarma.

Bez toho, abyste věděli něco více o vaší aplikaci nebo vašich požadavcích, je těžké poskytnout nějakou konkrétní radu. Ale tipoval bych, že nějaká stará dobrá normalizace by šla hodně daleko. Každá dobře implementovaná netriviální databáze má spoustu tabulek; deset stolů plus deset xtab tabulek by vás nemělo vyděsit.

A nebojte se generování kódu SQL jako způsobu implementace společných rozhraní napříč nesourodými tabulkami. Málo může jít daleko.




  1. STRING_SPLIT() v SQL Server 2016:Následná akce #2

  2. Nastavení hodnoty pro LIMIT při používání hromadného sběru

  3. Přidání podmínek v příkazu MERGE v Oracle SQL pro INSERT/UPDATE

  4. Co je ekvivalent DATALENGTH() v MySQL?