Yavaş MySQL tam metin arama

0 Cevap php

Ben bir MySQL veritabanı üzerinde tam metin araması gerçekleştirmek için bu sorguyu kullanıyorum:

SELECT DISTINCT 
questions.id, 
questions.uniquecode, 
questions.spam,
questions.questiondate,
questions.userid,
questions.description,
users.login AS username,
questions.questiontext,
questions.totalvotes,
MATCH(questions.questiontext, questions.uniquecode) 
AGAINST ('rock guitarist chick*' IN BOOLEAN MODE) AS relevance 

FROM questions 

LEFT JOIN users ON questions.userid = users.id 
LEFT JOIN answer_mapping ON questions.id = answer_mapping.questionid 
LEFT JOIN answers ON answer_mapping.answerid = answers.id
LEFT JOIN tagmapping ON questions.id = tagmapping.questionid
LEFT JOIN tags ON tagmapping.tagid = tags.id 

WHERE questions.spam < 10 

AND 

(
  MATCH(questions.questiontext, questions.uniquecode) 
  AGAINST ('rock guitarist chick*' IN BOOLEAN MODE) 

OR MATCH(answers.answertext) AGAINST ('rock guitarist chick*' IN BOOLEAN MODE) 

OR MATCH (tags.tag) AGAINST ('rock guitarist chick*' IN BOOLEAN MODE)

) GROUP BY questions.id ORDER BY relevance DESC

Sonuçlar çok alakalı, ancak arama gerçekten yavaş ve tablolar büyüdükçe ve yavaş yavaş oluyor.

Tablo istatistikleri:

questions - 400 kayıtlar

indexes

  • İLKÖĞRETİM btree - id
  • Btree - uniquecode
  • Btree - questiondate
  • Btree - Userid
  • FULLTEXT - questiontext
  • FULLTEXT - uniquecode

answers - 3,635 kayıtları

indexes

  • PRİMER - btree - id
  • Btree - answerdate
  • Btree - QuestionID
  • FULLTEXT - answertext

answer_mapping - 4228 kayıtları

indexes

  • PRİMER - btree - id
  • Btree - answerid
  • Btree - QuestionID
  • Btree - Userid

tags - 1847 kayıtları

indexes

  • PRİMER - btree - id
  • Btree - tag
  • FULLTEXT - tag

tagmapping - 3389 kayıtları

indexes

  • PRİMER - btree - id
  • Btree - tagid
  • Btree - QuestionID

Ben tagmapping kaldırmak ve tags KATILDI zaman ne sebeple olursa olsun arama ölçüde hızlandırır.

Bu sorgu hızlandırmak konusunda herhangi bir ipucu var mı?

Şimdiden teşekkürler!

0 Cevap