Ik ben nu al een tijdje bezig met PHP & MySQL, en zet zoveel mogelijkm dingen in het WHERE-stukje van een query om de selectie zo snel mogelijk te maken.
Maar nu weet ik niet zeker OF dat wel het snelste is.
Voorbeeld:
Tabel users
id int auto_increment PRIMARY
gebruikersnaam varchar UNIQUE
wachtwoord varchar
email varchar
actief enum('0', '1') (<-- is TINYINT beter?)
ToS enum('0', '1') " "
nieuwsbrief enum('0', '1') " "
extra_informatie text
Nu heb ik de volgende query:
UPDATE `users` SET `wachtwoord`='PHPhulp' WHERE `id`='1'
Hoe maak ik die nou het snelste?
Ik heb de volgende keuzes:
1. UPDATE `users` SET `wachtwoord`='PHPhulp' WHERE `id`='1'
2. UPDATE `users` SET `wachtwoord`='PHPhulp' WHERE `actief`='1' AND `tos`='1' AND `nieuwsbrief`='1' AND `id`='1'
3. UPDATE `users` SET `wachtwoord`='PHPhulp' WHERE `nieuwsbrief`='1' AND `tos`='1' AND `actief`='1' AND `id`='1'
4. UPDATE `users` SET `wachtwoord`='PHPhulp' WHERE `id`='1' AMD `nieuwsbrief`='1' AND `tos`='1' AND `actief`='1'
Een 2de query:
UPDATE `users` SET `wachtwoord`='PHPhulp' WHERE `gebruikersnaam`='ZeRoDeaD' (ik weet het id niet)
En de volgende keuzes:
1. UPDATE `users` SET `wachtwoord`='PHPhulp' WHERE `gebruikersnaam`='ZeRoDeaD'
2. UPDATE `users` SET `wachtwoord`='PHPhulp' WHERE `actief`='1' AND `tos`='1' AND `gebruikersnaam`='ZeRoDeaD'
3. UPDATE `users` SET `wachtwoord`='PHPhulp' WHERE `gebruikersnaam`='ZeRoDeaD' AND `tos`='1' AND `actief`='1'
Bij beide query's tellen de volgende regels:
id altijd anders
gebruikersnaam altijd anders
wachtwoord meestal anders
email meestal anders
actief 99/100 keer is het 1
ToS 80/100 keer is het 1
nieuwsbrief 40/100 keer is het 1
extra_informatie optioneel, meestal leeg
-Edit-
Ik denk dat de query die het minste per WHERE 'opdracht' wegstreept het snelste is OF de WHERE-query waar alleen `id`='1' instaat.
1.779 views