login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Fulltext index + Joins == traag? (Opgelost)

Offline mathijs92 - 04/10/2010 15:30 (laatste wijziging 04/10/2010 18:01)
Avatar van mathijs92Nieuw lid Ik heb de volgende query gemaakt:
  1. SELECT *
  2. FROM
  3. knhs_cpv_pe AS pe
  4. RIGHT JOIN
  5. knhs_cpv_co AS co
  6. ON
  7. co.persoonsnummer = pe.persoonsnummer
  8. LEFT JOIN
  9. knhs_cpv_di AS di
  10. ON
  11. co.diernummer = di.diernummer
  12. WHERE MATCH(pe.voorletters, pe.voornaam, pe.tussenvoegsels, pe.achternaam) AGAINST('Jansen')
  13. GROUP BY co.combinatienummer

Deze query neemt ruim de tijd, ergens rond de 2 seconden.

Als ik de volgende query uitvoer, gaat het veel sneller (0,118 sec):
  1. SELECT *
  2. FROM knhs_cpv_pe AS pe
  3. RIGHT JOIN knhs_cpv_co AS co ON co.persoonsnummer = pe.persoonsnummer
  4. LEFT JOIN knhs_cpv_di AS di ON co.diernummer = di.diernummer
  5. WHERE pe.achternaam = 'Jansen'
  6. GROUP BY co.combinatienummer


Het verschil is dus dat er hier geen gebruik wordt gemaakt van de FullText index. Het probleem zit daar echter ook niet.
Als ik de join weghaal, en dan de fulltext gebruik om te zoeken, wordt de query uitgevoerd in 0,0006 seconden. De query is dan:
  1. SELECT *
  2. FROM
  3. knhs_cpv_pe AS pe
  4. WHERE MATCH(pe.voorletters, pe.voornaam, pe.tussenvoegsels, pe.achternaam) AGAINST('Adelaars')


Een explain van de eerste query staat op: http://i56.tinypic.com/ibg8j4.png
Wie weet waar dit aan zou kunnen liggen?

Edit: OPGELOST:
  1. SELECT *
  2. FROM
  3. knhs_cpv_pe AS pe
  4. INNER JOIN
  5. knhs_cpv_co AS co
  6. ON
  7. co.persoonsnummer = pe.persoonsnummer AND (MATCH(pe.voorletters, pe.voornaam, pe.tussenvoegsels, pe.achternaam) AGAINST('Jansen') )
  8. INNER JOIN
  9. knhs_cpv_di AS di
  10. ON
  11. co.diernummer = di.diernummer

0 antwoorden

Gesponsorde links
Er zijn nog geen reacties op dit bericht.
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.168s