我有一个工作的SQL查询,在运行时,最多需要3分钟才能运行并将mysqld服务转换为超过100%的使用率。 我需要在3个不同的表上进行全文搜索。 我需要一个更好的方法来做到这一点,这不仅更快,但不会使SQL服务100%,反过来,杀死它驱动的网站。 我正在Ubuntu linux机器上执行这些测试,但生产版本将在Redhat linux的企业版上运行。
这是查询
SET @data = 'insert search text here';
SELECT * FROM stock
LEFT JOIN options ON options.stock_no = stock.stock_no
LEFT JOIN udesc ON udesc.stock_no = stock.stock_no
WHERE
(MATCH (stock.stock_no, stock.year, stock.mfg, stock.brand, stock.model, stock.type, stock.dsgn, stock.fptype, stock.chassis_no, stock.int_colour, stock.lbrand, stock.tagwords) AGAINST (@data IN BOOLEAN MODE))
OR
(MATCH (options.title) AGAINST (@data IN BOOLEAN MODE))
OR
(MATCH (udesc.data) AGAINST (@data IN BOOLEAN MODE))
AND stock.type NOT LIKE 'other'
ORDER BY STATUS ASC;
任何人都知道如何将其重组为不仅可以快速执行搜索而且不会占用mysqld服务100%的CPU时间,从而导致网站被盗?如果需要,我可以提供更多的表数据。 是的,所有表都是全文索引的。正如我所说,这是一个WORKING查询。 任何帮助将不胜感激。