Autor Zpráva
Tomekkk
Profil *
Zdravím Vás, nevím, zda-li patří dotaz sem nebo do kategorie Databáze, ale mám dotaz týkající se hledání na webu, připadá mi, že se delší dobu načítá PHP stránka, pokud hledám v databázi, kde je cca. 150 000 položek, index je u nazvu a popisu, SELECT mám takto, lze jej udělat jednodušeji nebo musím nějakým způsobem zrychlit MySQL apod.??? Děkuji za Vaši odpověď

SELECT * FROM seznam WHERE (MATCH(nazev) AGAINST ("+(>'.$vyhledavane_slovo.')" IN BOOLEAN MODE) OR MATCH(popis) AGAINST ("+(>'.$vyhledavane_slovo.')" IN BOOLEAN MODE)) AND (zobrazit="1" OR zobrazit="2") ORDER BY doporuceny DESC, zobrazit DESC

Moderátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Perry
Profil
No.. podle mě to brzdí
a) ORDER BY podle dvou sloupců
b) možná špatně navržené indexy na DB
Tomasekkk
Profil *
Omlouvám se, že píšu až nyní, rád bych se zeptal, zda-i existuje nějaký manuálek v češtině, kde se něco o indexích dozvím, index mám nastaven pro název, fulltext je nastaven pro nazev a popis, bohužel nevím zda-li je to správné nebo v tomto může být problém. Děkuji za radu

Tom
Tomasekkk
Profil *
Tak problém vyřešen, chyba asi byla v zápisu

WHERE (MATCH(nazev) AGAINST ("+(>'.$vyhledavane_slovo.')" IN BOOLEAN MODE) OR MATCH(popis) AGAINST ("+(>'.$vyhledavane_slovo.')" IN BOOLEAN MODE))


vyměnil jsem jej za

WHERE MATCH(popis) AGAINST ("+(>'.$vyhledavane_slovo.')" IN BOOLEAN MODE) AND MATCH(nazev) AGAINST ("+(>'.$vyhledavane_slovo.')" IN BOOLEAN MODE) 
Tomasekkk
Profil *
Aha tak problém nevyřešen, protože hledá z popisu a názvu dohromady :-( Pokud místo AND dám OR, tak se opět hledání velice zpomalí a vylistuje výsledky tak za cca. 4 vteřiny
Tomasekkk
Profil *
Pokud zadám

WHERE MATCH(popis,nazev) AGAINST ("+(>'.$vyhledavane_slovo.')" IN BOOLEAN MODE)


tak opravdu se data dlouho načítají, zvláštní, že pokud nechám jen popis, který je delší, tak se záznamy vylistují dá se říci okamžitě, napadá Vás v čem by mohl být "zakopaný" pes?

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