gpt4 book ai didi

mysql - 简单选择查询在 10M 大数据集的 mysql 表中花费太多时间

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

SELECT *
FROM many_leads_lead_details
WHERE location LIKE '%Los%Angeles%'
AND (keywords LIKE '%Real%' or
keywords LIKE '%Real Estate%' or
keywords LIKE '%Real Estate Agent%')

与本地主机数据库相比,上述查询花费的时间过多。

占用时间的数据库托管在另一台服务器上,响应时间如下本地主机 = 30.00 秒等等rds.amazonaws.com = 1.50 分钟

$leads2 = LeadDetails::query();
$temp = '';
$location = str_replace(' ', '%', explode(',', $campaign->location)[0]);
$leads2->Where('location', 'like', '%' . $location . '%');
//dd($leads2->get());
$leads2->Where(function ($query) use ($campaign, $temp) {
foreach (explode(' ', $campaign->keywords) as $index => $keyword) {
if ($index == 0) {
$temp .= $keyword;
} else {
$temp .= ' ' . $keyword;
}
$query->OrWhere('keywords', 'like', '%' . $temp . '%');
}
});
$leads2->get();

enter image description here

enter image description here

最佳答案

这个查询:

SELECT *
FROM many_leads_lead_details
WHERE location LIKE '%Los%Angeles%'
AND (keywords LIKE '%Real%' or
keywords LIKE '%Real Estate%' or
keywords LIKE '%Real Estate Agent%')

需要全表扫描。由于 LIKE 模式开头的通配符,无法使用索引。

我的第一个建议是修复您的数据模型。我怀疑您在 keywords 中存储了多个值。这些应该在一个单独的表中。

第二个建议是使用全文搜索——match() 函数。这是一个太长的话题,无法在这里回答。您应该从 documentation 开始.

关于mysql - 简单选择查询在 10M 大数据集的 mysql 表中花费太多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461470/

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