Autor Zpráva
matak
Profil
co myslíte, že je rychlejší?

vyhledávat v poli s 10M zaznamu, kde je to pole jen (klíč, hodnota)

nebo

hledat ve stejné tabulce v mysql, pomoci like?

pozor hledat se bude 10M krát a hlavně do toho času je potřeba započítat transakční režii, jak by jste to navrhli?
ShiraNai7
Profil
Hmm, 100 triliónrát provnávat hodnotu relugárním výrazem? Časovou náročnost si nedovedu představit.

<offtopic>
edit: co je to "Zkratka „mmm“"?
</offtopic>


Moderátor panther: Přivolávač moderátorů
matak
Profil
M = milion

v poli se hledá regulárním výrazem?

resp. hledám v poli takto

if (isset($pole['nejaky dlouhy text']))
G3n3sis19
Profil
myslím že tak velké pole by ti ani ramka nesežrala. Takže spíš mysql
TomášK
Profil
matak:
vyhledávat v poli s 10M“ + „hledat se bude 10M krát“ = 10M * 10M = 10^14, což jsou ty triliony. Možná jsi to myslel jinak? Kolikrát se tedy bude hledat?

Co přesně potřebuješ najít? První záznam / všechny záznamy, přesnou shodu s klíčem / shodu na základě regulárního výrazu?
matak
Profil
potřebuji vyhledat přesnou shodu s klíčem, ale nevím jak php tohle realizuje, neznám to pozadí, jestli foreach proběhne všechny klíče a porovnává

mám pole

array(
'nejaky varchar 255' => 1,
'nejaky varchar 255' => 2,
atd. celkem jich je cca 10M
)

jde jen o to jak efektivně a nejrychleji vyhledat ten pár, tedy ověřit jestli text už existuje, pokud ano zjistit to ID

vyhledávat se bude cca 10 milionkrát

do paměti se to asi vleze, ja myslim ze bychom se přece měli vejít do 255MB
ShiraNai7
Profil
matak:
do paměti se to asi vleze, ja myslim ze bychom se přece měli vejít do 255MB

255 bajtů * 10 000 000 = 2 550 000 000 bajtů = 2 490 234,375 kB = 2 431,87 MB = cca 2,5 GB
Alphard
Profil
Jestli jsou data v databázi, hledejte pomocí databázových prostředků.

V databázi není problém vyzkoušet časovou náročnost, prostě spusťte ten dotaz. Jestli se vám podaří upravit dotaz/strukturu tak, aby šlo použít indexy, tím líp.
TomášK
Profil
matak:
Vyhledávání v poli je v php realizováno přes hashovací funkci, nebude to tedy pokaždé prohledávat znovu. Index v databázi nad řetězci staví pravděpodobně něco jako částečnou trii, což bude asi o něco rychlejší. Implementace trie v nějakém kompilovaném jazyce by pravděpodobně byla nejrychlejší způsob, jak to lze řešit, ale také nejnáročnější na vytvoření/vyhledání.
matak
Profil
jde o to, že transakční náklady na 10M dotazů do dtb budou asi dost vysoké, s tou pamětí máte pravdu no,
jak je to myšleno s tou hashovací fcí? transakce na dtb budou sice vysoké, ale samotné hledání si myslím, že by mohlo být rychlejší než 10M x 10M proběhnout jedno sakra velké pole

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0