gpt4 book ai didi

MYSQL查询速度更快

转载 作者:行者123 更新时间:2023-11-29 06:15:29 25 4
gpt4 key购买 nike

我怎样才能使这个查询更快?它只是一种选择字段的方式,您可以在其中输入 varchar 文本。

    SELECT
F.field_name,
FI.farmer_name,
FI.lname_farmer,
FI.farmer_email,
FI.farmer_group,
L.first_name,
L.last_name,
L.email,
EI.extension_name,
EI.lname_ext,
EI.other_prof,
EI.extension_name
FROM
anReference AS R
INNER JOIN anFieldInfo AS F ON R.ref_id = F.ref_id
INNER JOIN anFarmerInfo AS FI ON F.ref_id = R.ref_id
INNER JOIN anCropInfo AS C ON C.ref_id = R.ref_id
INNER JOIN anLocalTechnician AS L ON L.ref_id = R.ref_id
INNER JOIN anSessionExtension AS SE ON SE.ref_id = R.ref_id
INNER JOIN anExtensionInfo AS EI ON EI.extension_id = SE.extension_id
where R.date_accessed BETWEEN '2016-03-20 00:00:00'
AND NOW() AND (
F.field_name LIKE '%test%'
OR FI.farmer_name LIKE '%test%'
OR FI.lname_farmer LIKE '%test%'
OR FI.farmer_email LIKE '%test%'
OR FI.farmer_group LIKE '%test%'
OR L.first_name LIKE '%test%'
OR L.last_name LIKE '%test%'
OR L.email LIKE '%test%'
OR EI.extension_name LIKE '%test%'
OR EI.lname_ext LIKE '%test%'
OR EI.other_prof LIKE '%test%'
OR EI.extension_name LIKE '%test%'
) AND r.category = 0;

我已经尝试过使用 concat,但效果不大。

最佳答案

计划 A。在每个表中的每组字段上创建一个 FULLTEXT 索引,然后对每个表使用一个 MATCH..AGAINST 进行文本搜索。但是,由于内容分散在 4 个表中,执行 4 个 SELECTsUNION,每个表都有一个 MATCH。警告:它仅适用于“单词”并且有其他限制。请提供SHOW CREATE TABLE;没有它,我只能做这个“挥手”。

解决方法如下:考虑如何编写 SELECT 来测试仅 1 个表的字段,然后执行所有 JOINing 以获得想要的结果。对其他 3 个表重复此操作。然后 UNION DISTINCT 将 4 个 SELECTs 放在一起。

B 计划:构建另一个表,将所有这些字段的 CONCAT 放在一个列中;搜索该表。

C 计划:更改 UI。

计划 D:计划 A 中描述的 UNION 可能 会更快一些,即使是糟糕的 LIKE '%text%'。这是因为临时表需要处理的东西更少。

计划 A 会快得多,但注意事项可能会阻止使用它。 B 计划不会更快。

VIEW 我们的语法糖;不是性能助推器。

关于MYSQL查询速度更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36123165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com