to Vám na rootu emigrovali všichni autoři, že pouštíte i toto? Tvrdit, že like je špatný a kdo ho používá je blb mi příjde hodně arogantní, pokud má autor - expert největší - jinou metodu, jak v databázi najdu slova obsahující slovo bobr, rád si ji poslechnu.
no vsak je to v clanku popsano ne? Pokud je pozadavek na extremne rychle vyhledavani, musi se puvodne nestrukturovany text rozsekat do navazbenych tabulek. Predpokladam, ze napriklad takovou adresu mas v databazi rozsekanou na ulici, mesto, PSC ne? Nebo se snad ma vyhledavat stylem select * from address where addr like '%110 00%', kdyz hledam vse s PSC 110 00? Samozrejme jeste lepsi je mit ulice a mesta zase v dalsich tabulkach.
Ok, svůj předchozí příspěvek jsem trochu přehnal, autorovi se omlouvám, v mnoha ohledech je článek velmi použný a dobře napsaný, ale tvrdit, že kdo používá LIKE je principiálně lempl, což z článku tak trochu vyplývá, to mi nepříjde OK...
Clanek preci nerika, ze LIKE je spatny, ale ze se pouziva i tam, kde se pouzivat nema. Jinymi slovy, nejde o to, jak najit bobra, ale o to, ze ho casto ani nikdo hledat nema.
Clanek preci nerika, ze LIKE je spatny? Já bych řekl, že říká.
...tvrdím, že programátor, který použije LIKE, si koleduje o to nebýt programátorem...
Z mého pohledu operátor LIKE podporuje šlendrián v programování...
...SQL tomu jakoby samo nahrává - obsahuje datový typ varchar (případně text) a operátor LIKE...
Dovolím si předpokládat, že bez operátoru LIKE by se o toto uživatel nesnažil....
Tak ja tedy nevim, ale i na mnoho dalsich clenek zapusobil dojmem, ze autor zcela a uplne odmita operator LIKE a kazdeho, kdo ho pouzije, dava do klatby :-)
Netvrdím, že kdo používá like je blb, ale tvrdím, že neumí programovat nebo kašle na to, co dělá. Asi jako truhlář, který vyrobí křivý stůl, židle, kde každá noha je jinak dlouhá. K vyhledávání slov v databázi je tu fulltext, což je uvedeno v závěru článku.
Rád bych se Vás zeptal na řešení následujícího problému: Na serveru je databáze popisů výrobků, hezky zindexovaná, hodnota ft_min_word_len nastavena na klasickou 4... Správce je trochu paranoidní a tak máte SQL účet s právy, které Vám nedovolí úpravy databáze. Vy jakožto programátor máte udělat jednoduché vyhledávání v textu těch popisů, fulltext se pro to krásně hodí, stačí jeden match .... against dotaz a je vymalováno. Ale co když příjdu já a začnu hledat výrazy OKI, LG, AEG, RAM, pošlete mě do jiného e-shopu? Netvrdím, že like není nadužíváno, rozhodně je, ale ne vždy je jiné elegantní řešení a to že ho občas někdo použije neznamená, že neumí programovat nebo kašle na to, co dělá. Nebo byste toto nějak vyřešil bez like? Pokud ano, tak jste borec. :-)
No, paranoia je v případě adminů spíš dobrá vlastnost ;-) A na příliš paranoidní adminy kteří si myslí že kolem nich se svět točí většinou platí management, tj. jděte za businessákem, prezentujte mu problém (Strašný průser! Když budu hledat "LG" tak mi to vůbec nic nenajde! Miliónové ztráty! Nebude na nové Porsche! Ale věděl bych jak to opravit!)
No a pak buď můžete nasadit tsearch2 s lepšími parametry, vytvořit nějaký alternativní fulltext (sám jsem jeden takový dělal, včetně podpory pro skloňování/časování apod. a není to až tak hrozné), a nebo použít něco mimo DB (například Lucene).