我有這個查詢,這需要我超過117秒的mysql數據庫。子查詢更快的結果
select users.*, users_oauth.* FROM users LEFT JOIN users_oauth ON users.user_id = users_oauth.oauth_user_id WHERE (
(MATCH (user_email) AGAINST ('sometext')) OR
(MATCH (user_firstname) AGAINST ('sometext')) OR
(MATCH (user_lastname) AGAINST ('sometext')))
ORDER BY user_date_accountcreated DESC LIMIT 1400, 50
如何使用子查詢來優化它?
的3場是全文:
ALTER TABLE `users` ADD FULLTEXT KEY `email_fulltext` (`user_email`);
ALTER TABLE `users` ADD FULLTEXT KEY `firstname_fulltext` (`user_firstname`);
ALTER TABLE `users` ADD FULLTEXT KEY `lastname_fulltext` (`user_lastname`);
只有一個網站中的搜索輸入到不同的表用戶字段進行搜索。
如果限制爲例如LIMIT 0,50
,查詢將在少於3秒內運行,但當LIMIT增加時查詢變得非常緩慢。
謝謝。
你能用這個查詢運行EXPLAIN併發布結果嗎? – Besi
並確定列來自哪些表。 –
您是否在全部搜索字段上創建了全文索引? – Shadow