SQL Join

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Steen

steen

05/12/2009 20:55:00
Quote Anchor link
Beste PHP'ers,

Ik heb twee tabellen, één met uitspraken, de ander met auteurs. Nu wil ik zoeken op een bepaalde tekst (wat auteur of uitspraak kan zijn). De tabellen heb ik gekoppeld met de volgende query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT b.auteur,b.uitspraak,
MATCH(s.naam) AGAINST('zoekwoord') + MATCH(b.veld1,b.veld2,b.veld3,b.uitspraak) AGAINST('zoekwoord') AS score
FROM auteurs AS s
LEFT JOIN citaten AS b ON s.id = b.auteur
WHERE MATCH(s.naam) AGAINST('zoekwoord')
OR MATCH(b.veld1,b.veld2,b.veld3,b.uitspraak) AGAINST('zoekwoord')
ORDER BY score DESC


Nu is deze query erg traag (zo'n minuut), dit komt mede doordat de citaten tabel meer dan 10.000 records bevat. Hoe kan ik deze query sneller maken met hetzelfde resultaat?
 
PHP hulp

PHP hulp

10/05/2021 21:12:50
 
---- ----

---- ----

05/12/2009 20:59:00
Quote Anchor link
records minder maken
maar dan heb je weer niet het zelfde resultaat
 
Steen

steen

05/12/2009 21:02:00
Quote Anchor link
Nee volgens mij is de query niet efficiënt
 

05/12/2009 21:04:00
Quote Anchor link
Indexen maken. Kijken wat van de query het sloomst loopt en dat verbeteren...
Oh, ik denk overigs dat er niet zoveel aan te doen is. Vanwege die match...
Gewijzigd op 01/01/1970 01:00:00 door
 
Steen

steen

05/12/2009 21:09:00
Quote Anchor link
Ik gebruik nu twee keer (bijna) dezelfde match, misschien is dat te vereenvoudigen?
 

05/12/2009 21:10:00
Quote Anchor link
Even profiler gebruiken, dan kan je zien waar de query's bottleneck zit.
 
Steen

steen

05/12/2009 21:12:00
Quote Anchor link
Edit: Volgens mij loopt hij wel snel wanneer ik er een LIMIT 0,30 aan gooi zoals phpmyadmin doet.

Status Tijd
starting 0.000032
checking query cache for query 0.000091
checking permissions 0.000010
checking permissions 0.000010
Opening tables 0.000026
System lock 0.000013
Table lock 0.000041
init 0.000043
optimizing 0.000019
statistics 0.000024
preparing 0.000022
FULLTEXT initialization 0.000066
Creating tmp table 0.000051
executing 0.000010
Copying to tmp table 78.009749
Sorting result 0.000076
Sending data 0.003781
end 0.000024
removing tmp table 0.000056
end 0.000011
end 0.000009
query end 0.000010
storing result in query cache 0.000030
freeing items 0.000023
closing tables 0.000016
logging slow query 0.000009
logging slow query 0.000008
cleaning up 0.000010
Gewijzigd op 01/01/1970 01:00:00 door steen
 

05/12/2009 21:16:00
 
Steen

steen

05/12/2009 21:17:00
Quote Anchor link
Zie hierboven voor de resultaten,,, Het verplaatsen naar een tijdelijke tabel duurt het langst, is daar wat aan te doen behalve een LIMIT toevoegen?
 
Steen

steen

06/12/2009 16:45:00
Quote Anchor link
*bump* iemand een oplossing om 't sneller te maken? De Order By zorgt voor de tmp tabel
 
Steen

steen

07/12/2009 17:06:00
Quote Anchor link
*bump*
 
Steen

steen

08/12/2009 19:21:00
Quote Anchor link
*bump*
 
Mr.Ark

Mr.Ark

08/12/2009 19:26:00
Quote Anchor link
Ga eens zoeken waar die sloom gaat.

Probeer eens zonder die OR.
 
Hipska BE

Hipska BE

08/12/2009 19:26:00
Quote Anchor link
heb je al es explain gedaan ipv hier te lopen bumpen :p
 
Steen

steen

08/12/2009 19:39:00
Quote Anchor link
EXPLAIN:

1 SIMPLE s ALL NULL NULL NULL NULL 3660 Using temporary; Using filesort
1 SIMPLE b ALL NULL NULL NULL NULL 11166 Using where
 
Hipska BE

Hipska BE

08/12/2009 19:44:00
Quote Anchor link
EXPLAIN EXTENDED natuurlijk, want daar ben je niet veel mee nu..

leesvoer:
http://dev.mysql.com/doc/refman/5.1/en/using-explain.html
http://dev.mysql.com/doc/refman/5.1/en/query-speed.html
 
Steen

steen

08/12/2009 21:44:00
Quote Anchor link
EXPLAIN EXTENDED geeft exact hetzelfde resultaat bij deze query
 
Steen

steen

08/12/2009 21:45:00
Quote Anchor link
EXPLAIN EXTENDED geeft exact hetzelfde resultaat bij deze query
 
Steen

steen

08/12/2009 21:57:00
Quote Anchor link
EXPLAIN EXTENDED geeft exact hetzelfde resultaat bij deze query
 
Steen

steen

08/12/2009 21:57:00
Quote Anchor link
EXPLAIN EXTENDED geeft exact hetzelfde resultaat bij deze query

Gelieve Niet Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de http://www.phphulp.nl/imgs/forum/edit.gif knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door steen
 
John D

John D

08/12/2009 21:59:00
Quote Anchor link
al die matches en een OR is killing voor performance.
Gewijzigd op 01/01/1970 01:00:00 door John D
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.