Heej :)
Ik ben bezig met wat educatie voor mezelf:
Ik probeer een gigantische database aan te leggen, waarin miljoenen rijen komen te staan. Natuurlijk kon ik niets vinden waarmee ik men database eens goed kon vullen, dus heb ik maar voor md5 hashes gekozen.
Nu is het dat een script constant hashes en de betekenissen daarvan toevoegt aan een tabel die de naam heeft van de eerste 3 karakters van de hash, bijvoorbeeld:
H_a3b
H_Gd@
Hierdoor worden er precies 4096 tabellen aangemaakt.
De sql van de tabel is zo gemaakt:
CREATE TABLE IF NOT EXISTS `tabelnaam` (
`id` int(30) NOT NULL AUTO_INCREMENT,
`base` varchar(50) NOT NULL,
`hash` varchar(40) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `base` (`base`),
FULLTEXT KEY `hash` (`hash`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Hierdoor worden de miljoenen hashes opgesplitst, en is het tot nu toe sneller met zoeken. Want als iemand een hash opvraagt, neemt het script gewoon de eerste 3 karakters van de hash, en weet daardoor gelijk de tabelnaam waarin gezocht moet worden.
Mijn vraag: Is dit een goede aanpak als het gaat om het snel opzoeken van de betekenis van hashes?
Andere vraag: Kan een database op deze manier nog snel werken, als er per 20 seconden 1000 rijen worden toegevoegd?
1.821 views