gpt4 book ai didi

MySQL Left Join 查询挂起 4 小时

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

运行以下查询等待 3 小时 50 分 39.70 秒是可以接受的还是正常的?

CREATE TABLE ukbm001marketing.CampaignHistory_v2
(
AddressId int,
CampaignId int,
CampaignTypeId int,
OpenUserId nvarchar(255),
OpenDate datetime,
CloseUserId nvarchar(255),
CloseDate datetime
);

INSERT INTO ukbm001marketing.CampaignHistory_v2

SELECT a.ContactId,
b.CampaignCodeId,
c.CampaignId,
'mballinger',
now(),
NULL,
NULL -- SELECT *
FROM
ukbm001marketing.temp_ContactHistory_grtthn2009_raw a
LEFT JOIN
ukbm001marketing.temp_CampaignCode_raw b ON a.CampaignCode = b.CampaignCode
AND a.ContactDate = b.ContactDate
AND a.Load_Date = b.Load_Date
LEFT JOIN
ukbm001marketing.temp_ContactCodes_raw c ON a.ContactCode = c.ContactCode;

查询中使用的表:

  • ukbm001marketing.temp_ContactHistory_grtthn2009_raw565,832
  • ukbm001marketing.temp_CampaignCode_raw9505
  • ukbm001marketing.temp_ContactCodes_raw39

我在命令提示行中运行了这个查询。

过去,我曾使用过 Microsoft SQL Server(由我的 IS 部门设置)。我正在做我自己的项目,我有以下设置:

使用 EasyPHP12.1 安装

  • Apache/2.4.2 (Win32) PHP/5.4.6
  • 软件版本:5.5.27-log - MySQL Community Server (GPL)

笔记本电脑规范

  • 处理器:Intel(R) Core(TM) i7-2620M CPU @ 2.70ghz 2.70ghz
  • RAM:8.00 GB(可用 7.88 GB)
  • 系统64位Windows系统

系统以 50% 的 CPU 使用率运行。

我没有为任何表格编制索引。我没有给表任何主键。这个问题是否与我的系统性能有关?这是数据库设计问题吗?还是 mysql 服务器上的设置?

非常感谢您的帮助。

最佳答案

这绝对是索引问题。您在不使用任何索引的情况下将 3 个字段的 565.832 行计数表连接到 9505 表。这将为您提供对两个表的全表扫描,这意味着服务器确实必须从磁盘 (-> slooow) 中获取所有这些 565832 并在内存中匹配它们。

鉴于您提供的信息有限,我认为您没有进行任何 MySQL 优化,这意味着您的 join_buffer_size 会相当小。这将导致更多的表扫描,因为 MySQL 无法将所有内容存储在缓冲区中。因此,如果您不指示 MySQL 实际使用它,您的 8Gb 内存对您没有任何好处。

基本上,在“a”和“b”表的 campaigncode、contactdate 和 load_date 字段上创建多列索引,并在“a”和“c”表的 contactcode 字段上添加索引.

根据表结构(肯定是当 b 或 c 表包含许多其他未在此处列出的字段时),您甚至可以考虑将 campaigncodeid 字段添加到 'b' 表的索引中,并将 campaignid 添加到“c”表上的索引。这样,MySQL 就可以使用索引来检索所有的数据,而不需要访问实际的数据表来检索这两个字段。显然,惩罚是你的索引会更大。结合一些 MySQL 调优,您可以将索引保留在内存中,从而进一步加快整个过程。

关于MySQL Left Join 查询挂起 4 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16316266/

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