我有这个查询,这需要我超过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