Em nosso servidor web, minha equipe tem criado novos bancos de dados em MySQL para gerenciar backups. Eles simplesmente criam um novo database_DATE e copiam nosso site ao vivo. O que me fez pensar hoje... Ter um banco de dados (sem possibilidade de ser usado) pode afetar o desempenho (memória de adivinhação) do servidor?
LOSTinDB's questions
Tenho um fornecedor que está começando a me fornecer alguns relatórios bastante grandes sobre as conclusões e o uso do curso.
Eles têm dois formatos para os relatórios:
Se um aluno estiver matriculado em um curso, ele terá uma entrada de linha com informações básicas do aluno e do curso para cada curso. Os campos seriam nome do aluno, id do aluno, e-mail do aluno, nome do curso, status do curso, data de conclusão do curso.
Cada aluno teria uma linha. Cada curso seria representado por uma coluna diferente. Assim, teríamos nome do aluno, id do aluno, e-mail do aluno, nome do curso A, status do curso A, data de conclusão do curso A, nome do curso B, status do curso B, data de conclusão do curso B, nome do curso C, status do curso C, data de conclusão do curso C, nome do curso D, status do curso D, data de conclusão do curso D...
O ponto positivo do relatório nº 2 é que ele é muito menor que o relatório nº 1. No entanto, estou tendo dificuldade em controlar a execução de visualizações e trabalhos com base em uma tabela de colunas variáveis (conforme os cursos são adicionados, eu realmente não sei).
Preciso fazer alguns relatórios de uso avançados e encerrar as informações do aluno com determinados cursos e conclusões. Existe uma razão pela qual um dos formatos brutos facilitará meu trabalho ou facilitará as consultas do banco de dados?
Eu tenho todos os tipos de visualizações no mysql com dados de funcionários. Eu tentei usar métodos como este - https://stackoverflow.com/questions/2384298/why-does-mysql-report-a-syntax-error-on-full-outer-join mas eles simplesmente não funcionam para Visualizações.
Acabo obtendo mais de um LEFT JOIN como resultado. Existe uma maneira de mesclar duas visualizações sem incluir duplicatas no mysql - atualmente estou usando um processo de 4 visualizações para duplicar isso.
Aqui está uma pergunta que fiz ontem - https://stackoverflow.com/questions/22180727/left-joining-two-views-is-slow .
Recebi uma boa resposta que me ajudou, mas não entendo por que o LEFT JOIN é muito mais lento que a pesquisa. O LEFT JOIN durou 16 segundos - e tenho certeza de que minhas tabelas estão pelo menos 90% otimizadas - e ao fazer a pesquisa, são apenas 0,14 segundos. Quando eu LEFT JOIN tabelas, não é tão lento, então por que visualizações?
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
Obtendo erro ao tentar obter a data MAX. Também não tenho certeza se esta é a maneira mais rápida de fazer isso.
tenho uma tabela com campos
ID do Empregado
bláblá
blá blá2
.....
RecordMonth
Ano de registro
- portanto, cada funcionário deve ter apenas uma entrada correspondente para um mês, ano, Emp#. Como faço para montar uma mesa.
Então, como configuro a tabela para que EmployeeID possa ser atualizado uma vez por mês, mas nunca possa ter duas entradas para um mês e ano correspondentes?
Estou tentando mesclar nossos dados de RH. Tive que criar minhas próprias tabelas para dar uma tabela de "regiões"
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
Isso funciona bem e adiciona uma região para cada usuário. No entanto, gostaria de dar um passo adiante. Eu gostaria que ele manuseasse instâncias em que um funcionário não tivesse ldap_full.thomslocationcountrydescr (portanto, nulo) ou se o funcionário ldap_full.thomslocationcountrydescr não estivesse na tabela de pesquisa. Isso parece simples, mas tentei algumas coisas e não acho que minha sintaxe esteja nem perto.
Simplesmente gostaria que a região fosse definida como "ruim" para cada funcionário com um "novo país" ou nenhum país.
Recebo um feed LDAP todas as noites. Eu o recebo como um arquivo de texto e despejo/crio minha tabela LDAPALL. Existem cerca de 75 mil funcionários vezes cerca de 50 campos.
Eu também tenho o seguinte:
LDAPIMPORTANTE - visualização que armazena todos os 75K, mas apenas 15 campos
LDAPSHORT - visualização que armazena todos os 75k, mas 5 campos
LDAPAB - visualização que armazena apenas 9 mil funcionários com base em dois grupos (pesquisa de campo)
Cada um deles é muito usado e para aplicativos diferentes e também há muitas visualizações escritas nessas visualizações. Mas não há atualizações para eles. Não atualizamos os dados dos funcionários. É apenas atualização LDAPALL uma vez por noite.
Nessa circunstância, devo criar tabelas da tabela LDAPALL em vez de exibições? Eu poderia configurar trabalhos para criar essas tabelas uma vez por noite. Qual é a melhor prática por trás disso? Fale em termos leigos porque sou um desenvolvedor PHP feito para fazer todas as coisas de administração de banco de dados.