Kdy byste měli zvážit indexování SQL tabulky?

hlasů
4

Kolik záznamů by měl být před považuji indexování mé sql tabulky?

Položena 07/02/2009 v 01:50
zdroj uživatelem
V jiných jazycích...                            


8 odpovědí

hlasů
5

Je-li čas dotazu je nepřijatelné. Nebo ještě lépe, vytvořit několik indexy nyní, které by mohly být užitečné, a spustit vysvětlení nebo EXPLAIN ANALYZE na vaše dotazy, jakmile databáze je obýván reprezentativních údajů. V případě, že indexy jsou nepomáhá, pokles je. Pokud existují pomalé dotazy, které by mohly těžit z více či různých indexů změnit indexy.

Nejste bude vázáno v počátečním výběru indexů. Experiment, a ujistěte se, že měření výkonu !

Odpovězeno 07/02/2009 v 01:54
zdroj uživatelem

hlasů
8

Chtěl bych vytvořit položky rejstříku, když si vytvořím svůj stůl. Pokud se rozhodnete vytvořit indexy po tabulka se rozrostla na 100, 1000, 100000 entries to může jen trvat hodně času a možná i vaše databáze není k dispozici, zatímco vy to děláte.

Zamyslete se nad stolem nejprve vytvořit indexy si myslíte, že budete potřebovat, a pak jít dál.

V některých případech, zjistíte, že byste měli mít indexované sloupec, pokud to je případ, opravit ji, když ji objevit.

Vytvoření indexu na hledaného pole není pre-optimalizace, je to jen to, co je třeba udělat.

Odpovězeno 07/02/2009 v 01:54
zdroj uživatelem

hlasů
7

Neexistuje žádný dobrý důvod vzdát zjevné indexy (FKS, atd), při vytváření tabulky. To se nikdy výrazně ovlivnit výkon na to, aby nepotřebné indexy malých tabulek, a to je dobré, aby se první řez, když je vaše mysl v souvislosti s návrhem schématu. Také některé indexy slouží k zabránění duplicity, které mohou být užitečné bez ohledu na velikost tabulky.

Myslím, že správná odpověď na vaši otázku je, že počet záznamů v tabulce by měl mít nic společného s tím, když se vytvořit indexy.

Odpovězeno 07/02/2009 v 02:04
zdroj uživatelem

hlasů
3

Obecně souhlasím s předchozím radu. Vždy deklarovat referenční integrity tabulky (primární klíč, cizí klíče), sloupec omezení (ne null, kontrola). Ušetří z noční můry, kdy aplikace kladou špatná data do tabulek (i ve vývoji). Já bych zvážit přidání indexů pro sloupce společného přístupu (sloupce v kde klauzule, které se používají v =, <> testy), stejně. Většina moderních implementací RDBMS jsou docela dobré na udržení vás indexy až do dnešního dne, aniž by zasáhla svůj výkon. Takže náklady s indexy je minimální. Také většina RDBMS je mít plán dotaz hodnotitelů, které vypadají při relativní náklady jít do datových řad pomocí indexu, nebo použitím nějaké tabulky skenování. Takže opět výkonnostní hity jsou minimální.

Odpovězeno 07/02/2009 v 02:35
zdroj uživatelem

hlasů
1

Záleží.

Kolik dat je v tabulce? Jak často jsou data vložena? Mnoho indexů může zpomalit čas vložení. Vždycky dotaz všechny řádky tabulky? V tomto případě indexy asi moc nepomůže.

To nejsou běžné zvyklosti ačkoli. Ve většině případů, víte, že jste bude dotazování podmnožinu dat. O jaké pole? Existují společné pole, které jsou vždy spojeny na? Podívejte se na dotaz plány pro běžné nebo typické dotazy, bude to obvykle ukáže, kde to tráví veškerý svůj čas.

Odpovězeno 07/02/2009 v 02:48
zdroj uživatelem

hlasů
1

Jako rutinní záležitost I proveďte následující kroky na přečtených těžkých tabulkách :

  • Vytvořte indexy na společný připojit pole , jako jsou cizí klíče, když si vytvořím tabulku.
  • Zkontrolujte, zda plán dotazu pro Zobrazení nebo uložených procedur a přidejte indexy všude tam, kde je indikována prohledávání tabulky .
  • Zkontrolujte, zda plán dotazu pro dotazy od mé žádosti a přidat indexy všude tam, kde je indikována prohledávání tabulky. (A často se snažit, aby z nich uložené procedury)

Na zápis těžkých tabulek (jako protokoly o činnosti) se lze vyhnout indexy, pokud nejsou nezbytně nutné. Také jsem tendenci archivovat tyto údaje do indexovaných tabulek v pravidelných intervalech.

Odpovězeno 07/02/2009 v 06:08
zdroj uživatelem

hlasů
1

Jestli je jedinečné omezení na stole (a tam by měl být alespoň jeden), pak to bude obvykle být prosazen jedinečný index.

V opačném případě, přidáte indexy, když výkon dotazu je špatné a přidáním indexu budou prokazatelně zlepšit výkon. Existují knihy na téma, jak vytvořit dobré sady indexy na tabulkách, včetně relační databáze Index designu a Optimalizační . To vám dá spoustu nápadů a důvody, proč jsou dobré.

Viz také:

a není pochyb o tom, řada dalších.

Odpovězeno 07/02/2009 v 06:15
zdroj uživatelem

hlasů
2

Dva.

Myslím to vážně. Pokud existují dvě řady nyní, a vždy budou existovat dva řádky, náklady na indexování je téměř nulová. Je to rychlejší než index k zamyšlení, zda byste měli. Nebude to trvat optimalizátor příliš dlouho přijít na to, že procházením tabulky je rychlejší než pomocí indexu.

Pokud existují dvě řady teď, ale bude 200.000 v blízké budoucnosti náklady na ne indexace by mohla být neúnosně vysoké. Ten správný čas, aby zvážila indexování je nyní.

Když to řekl, pamatujte, že automaticky získáte index při deklarovat primární klíč. Vytvoření tabulky bez primárního klíče je koleduje o malér ve většině případů. Takže jediný případ, kdy je opravdu potřeba zvážit indexování je, když chcete jiný než index na primární klíč index. Musíte vědět, provoz a předpokládaný objem, aby se k tomuto hovoru. Pokud jste si to špatně, budete vědět, a vy můžete zvrátit rozhodnutí.

Jednou jsem viděl referenční tabulky, který byl vytvořen s žádným indexem, kdy obsahoval 20 řádků. Vzhledem ke změně obchodního tato tabulka se rozrostla na asi 900 řádků, ale ten, kdo měl všimli absence indexu ne. Doba potřebná k vložení nové objednávky rostly od asi 10 sekund do 15 minut.

Odpovězeno 07/02/2009 v 06:23
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more