在我们的 Web 服务器上,我的团队一直在 MySQL 中创建新数据库来管理备份。他们只是创建新的 database_DATE 并复制我们的实时站点。这让我今天想到......拥有一个数据库(永远不可能被使用)会影响服务器的性能(猜测内存)吗?
LOSTinDB's questions
我有一个供应商开始给我一些关于课程完成和使用情况的相当大的报告。
他们有两种报告格式:
如果学生注册了一门课程,他们将有一个行条目,其中包含每门课程的基本学生和课程信息。字段将是学生姓名、学生 ID、学生电子邮件、课程名称、课程状态、课程完成日期。
每个学生有一排。每门课程将由不同的列表示。所以我们会有学生姓名、学生 ID、学生电子邮件、课程名称 A、课程状态 A、课程完成日期 A、课程名称 B、课程状态 B、课程完成日期 B、课程名称 C、课程状态 C、课程完成日期C、课程名称 D、课程状态 D、课程完成日期 D...
报告 #2 的优点在于它比报告 #1 小得多。但是,我很难掌握基于可变列表执行视图和作业的方法(随着课程的添加,我真的不知道)。
我需要制作一些高级使用报告,并用某些课程和完成情况来总结学生信息。为什么其中一种原始格式会使我的工作更轻松或使数据库更容易执行查询?
我在 mysql 中有各种带有员工数据的视图。我曾尝试使用这样的方法 - https://stackoverflow.com/questions/2384298/why-does-mysql-report-a-syntax-error-on-full-outer-join但它们根本不起作用意见。
结果我得到了更多的 LEFT JOIN。有没有办法合并两个视图而不在 mysql 中包含重复项 - 我目前正在使用 4 视图进程来复制它。
这是我昨天问的一个问题 - https://stackoverflow.com/questions/22180727/left-joining-two-views-is-slow。
我得到了一个对我有帮助的好答案,但我不明白为什么 LEFT JOIN 比查找慢得多。LEFT JOIN 是 16 秒——我很确定我的表至少优化了 90%——在进行查找时只需 0.14 秒。当我 LEFT JOIN 表时,它并没有这么慢那么为什么要查看?
SELECT
smart_allusers_karen.lastlogin,
smart_allusers_karen.supemail,
smart_allusers_karen.regionname
FROM
smart_allusers_karen
WHERE lastlogin < MAX(smart_allusers_karen.lastlogin) - INTERVAL 30 DAY AND
lastlogin > MAX(smart_allusers_karen.lastlogin) - INTERVAL 60 DAY
ORDER BY lastlogin
尝试获取 MAX 日期时出错。也不确定这是否是最快的方法。
我有一个带有字段的表
员工ID
废话
废话2
......
记录月
创纪录年
- 所以每个员工应该只有一个月、一年、Emp#的匹配条目。我如何设置一个表。
那么如何设置表以便 EmployeeID 可以每月更新一次,但在匹配的月份和年份中永远不能有两个条目?
我正在尝试合并我们的人力资源数据。我必须创建自己的表来提供“区域”表
DROP TABLE
IF EXISTS testgiver.ldap_karen;
CREATE TABLE testgiver.ldap_karen (uid VARCHAR (10) NOT NULL PRIMARY KEY) SELECT
ldap_full.thomsnamedisplay,
ldap_full.uid as 'uid',
ldap_full.businesscategory,
ldap_full.mail,
ldap_full.givenname,
ldap_full.sn,
ldap_full.departmentnumber,
ldap_full.title,
ldap_full.thomsmgdescr,
ldap_full.thomsmgdescroverride,
ldap_full.thomscompanydescr,
ldap_full.thomscompanydescroverride,
ldap_full.thomslocationstreet1,
ldap_full.thomslocationcity,
ldap_full.thomslocationstatedescr,
ldap_full.thomslocationpostal,
ldap_full.thomslocationcountrydescr,
ldap_full.thomssupervisorid,
ldap_full.thomssupervisoriddescr,
ldap_full.thomscompanyshortdescroverride,
ldap_full.thomsbulevel1descr,
ldap_full.thomsbulevel1shortdescr,
ldap_full.thomsbulevel2descr,
ldap_full.thomsbulevel2shortdescr,
ldap_full.thomsroleindicatordescr,
ldap_full.thomsjobcodedescr,
ldap_full.thomsjobfamilycode,
ldap_full.thomsjobfamilydescr,
ldap_full.thomsrecordtypedescr,
sup_email.mail AS supemail,
reports_regionnames.regionname
FROM
ldap_full
LEFT JOIN ldap_full AS sup_email ON ldap_full.thomssupervisorid = sup_email.uid
LEFT JOIN reports_regions ON ldap_full.thomslocationcountrydescr = reports_regions.thomslocationcountrydescr
LEFT JOIN reports_regionnames ON reports_regions.thomsregion1 = reports_regionnames.regiondid
这工作正常并为每个用户添加一个区域。但是,我想更进一步。我希望它能够处理员工没有 ldap_full.thomslocationcountrydescr(因此为空)或者员工 ldap_full.thomslocationcountrydescr 不在查找表中的情况。这看起来很简单,但我已经尝试了一些东西,但我认为我的语法还不够接近。
只是希望将每个具有“新国家”或没有国家的员工的区域设置为“坏”。
我每晚都会收到一个 LDAP 提要。我将它作为文本文件获取并转储/创建我的 LDAPALL 表。大约有 75,000 名员工乘以大约 50 个领域。
我也有以下几点:
LDAPIMPORTANT - 存储所有 75K 但仅 15 个字段的视图
LDAPSHORT - 存储所有 75k 但 5 个字段的视图
LDAPAB - 仅基于两个组存储 9k 名员工的视图(字段查找)
这些中的每一个都被大量使用并用于不同的应用程序,并且针对这些视图编写了很多视图。但是他们没有更新。我们不更新员工数据。它只是每晚一次的 LDAPALL 更新。
在这种情况下,我应该从 LDAPALL 表而不是视图创建表吗?我可以设置工作以每晚创建一次这些表。这背后的最佳实践是什么?用外行的话来说,因为我是一名 PHP 开发人员,专门从事所有数据库管理工作。