Permalänk
Medlem

Index SQL

Har inte riktigt fattat det här med index när det gäller databaser. Jag vet så mycket att det kan effektivisera sökningar och göra databasen avsevärt mycket snabbare än om den inte använder index. Index läggs ju in per tabell och jag undrar nu vilka fält som oftast är "bäst" att indexera för att få en vettig prestanda i databasen och dess tabeller?

Visa signatur

WS: Mac Studio M1 Max | 32 GB | 1TB | Mac OS
WS: Intel i5 12600K | 64 GB DDR4 @3600 Mhz | 2x1TB nvme 2x1TB SSD SATA | Windows 11 & Manjaro Linux
Bärbar: Macbook Pro 14" | M1 Pro | 16GB RAM | 512GB SSD | Mac OS
Servrar: Intel i7 10700K | 64 GB DDR4 @3600Mhz | 3 TB SSD + 22TB HDD | Unraid |
4x Raspberry pi 4b 8Gb | Dietpi |

Permalänk
Medlem

Som princip så skall det som är vanligt att söka efter vara indexerat så det beror på vad det är för databas, i ett medlemsregister kanske för- och efternamn. I ett forum användarnamn, i ett galleri namn på fotografier...

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Fegis
Som princip så skall det som är vanligt att söka efter vara indexerat så det beror på vad det är för databas, i ett medlemsregister kanske för- och efternamn. I ett forum användarnamn, i ett galleri namn på fotografier...

Alltså vad som söks i databasen eller vad man söker efter i sökfunktionen, eller vad menas?
den sida som listar trådar "söker" ju i databasen på ID på trådar t.ex.
I detta fall är det ett enkelt forum som ska byggas.. Men att indexera användarnamn? Hur ofta söker man på det? Då är det väl bättre att indexera den text som folk skriver i sina trådar? Det är ju texten man oftast söker på i ett forum.. alltså om man vill veta något specifikt om något..

Visa signatur

WS: Mac Studio M1 Max | 32 GB | 1TB | Mac OS
WS: Intel i5 12600K | 64 GB DDR4 @3600 Mhz | 2x1TB nvme 2x1TB SSD SATA | Windows 11 & Manjaro Linux
Bärbar: Macbook Pro 14" | M1 Pro | 16GB RAM | 512GB SSD | Mac OS
Servrar: Intel i7 10700K | 64 GB DDR4 @3600Mhz | 3 TB SSD + 22TB HDD | Unraid |
4x Raspberry pi 4b 8Gb | Dietpi |

Permalänk
Medlem

Fegis menar indexerade fält för att snabba upp sökningar, sql-frågor, på just de fälten. Jag tror du menar att alltid ha något ID på varje värde i databasen och om indexering av dem?!

Det du egentligen bara behöver göra är att sätta fältet ID som en primärnyckel och ge det till exempel autogenererade värden. I till exempel MS-SQL blir då detta fält indexerat, eftersom man normalt efterfrågar denna.

Eller har jag förstått fel?

Permalänk
Testpilot

Ett forum brukar vara uppbyggt på att man har en tabell med trådar och en med alla inlägg som då kan ligga i olika trådar. Inläggstabellen har ett unikt id för varje inlägg men du måste även ha ett fält som talar om vilken tråd ett inlägg tillhör. När en besökare vill läsa en tråd måste man söka i inläggstabellen efter alla inälgg som har det rätta tråd-id:t, därför ska du indexera tråd-id-fältet för annars förlorar du mycket prestanda då databasen annars måste söka igenom varenda inlägg för att se om det har rätt tråd-id.

Fegis menar det man söker på i sina frågor, en vanlig WHERE är en sökning.

Visa signatur

Kolla gärna in min RGB-LED-ljusstake i galleriet
[Gigabyte GA-Z97MX-Gaming 5][Intel Core i5 4690K][Corsair XMS3 16GB][Asus GeForce RTX 2060 Super Dual Evo OC]

Permalänk
Medlem

jag har ett exemple...

en tabell med har 24 kolumer men man kan bara söka på 5 av dessa och då är dessa 5 indexerade för att snabba på det hela lite - inte för att det går långsamt fn men det lär växa betydligt...

Visa signatur

Har varit på detta forum på tok för länge...

Permalänk
Medlem

Det som ska indexeras är de fält som används i en SQL WHERE-sats. Alltså i detta exempel: "SELECT namn FROM tabell WHERE 'alder' = 18", ska fältet "alder" i tabellen "tabell" ha ett Index.

Visa signatur

AMD X2 4200+ 2.2ghz - MSI Amethyst (HP OEM) moderkort - 2x 1gb Infinion PC3200 @ 3-3-3-8-2T - MSI 7800GTX 256mb - Raptor Gaming M2 - Koss SB45

Permalänk
Medlem

Att ha en tabell utan index är ungefär som att artiklarna i ett lexikon skrevs i slumpartad följd, då måste man gå igenom hela boken för att hitta alla artiklar som börjar på till exempel 'A'. Det tar en stund alltså.