| Bellacosa Mainframe apresenta IBM Mainframe DB2 Inner Join |
🔷 INNER JOIN no IBM DB2 Mainframe – A Arte de Relacionar Tabelas
Se você trabalha com IBM Mainframe, provavelmente já precisou combinar dados de diferentes tabelas. E para isso existe o INNER JOIN, que é o clássico entre os joins em SQL.
Mas antes de entrar nos detalhes, vamos à história…
🕰️ História e Origem
O conceito de INNER JOIN vem diretamente do Modelo Relacional de Codd (1970), criado dentro da IBM.
-
Edgar F. Codd, um cientista da IBM, imaginou que dados deveriam ser armazenados em tabelas relacionais e manipulados por álgebra relacional.
-
Ele não inventou “INNER JOIN” como conhecemos hoje, mas a ideia de combinar tabelas via chaves comuns nasceu com ele.
-
SQL evoluiu nos anos 80 para suportar explicitamente joins:
-
Sintaxe implícita:
FROM A, B WHERE A.key = B.key -
Sintaxe explícita:
FROM A INNER JOIN B ON A.key = B.key
-
No DB2 para Mainframe, o INNER JOIN é altamente otimizado para lidar com milhões de linhas em transações batch ou OLTP, mantendo a performance crítica.
⚙️ O que é INNER JOIN?
INNER JOIN é a operação que retorna somente as linhas onde existe correspondência em ambas as tabelas, baseado em uma chave comum.
🔹 Sintaxe padrão DB2
🔹 Observações
-
Chave comum: não precisa ter o mesmo nome, apenas valores compatíveis.
-
Sem correspondência → linha é descartada.
-
Pode usar múltiplas tabelas → INNER JOIN é associativo.
💡 Dicas Bellacosa para Mainframe
-
Prefira joins explícitos (
INNER JOIN ON) em DB2 → facilita leitura e manutenção. -
Sempre qualifique colunas se houver nomes repetidos → evita ambiguidade (
E.EmployeeID,O.EmployeeID). -
Use aliases curtos → economiza digitação e deixa o código limpo.
-
Evite cartesian products sem intenção →
FROM A, Bsem WHERE é um Product, que explode linhas. -
Verifique estatísticas de tabela → DB2 otimiza join usando índices.
🔍 Curiosidades & Easter Eggs
-
No DB2, todas as joins são INNER por padrão se você não usar OUTER.
-
Internamente, o otimizador transforma INNER JOIN em operações de álgebra relacional:
Product + Selection. -
Usar
JOINexplícito ajuda o Explain Plan a gerar caminhos de acesso mais eficientes. -
Combinar índices corretos + INNER JOIN = batch mais rápido, menos I/O.
🧪 Exemplo prático
Imagine que temos duas tabelas no z/OS DB2:
EMPLOYEES
| EmployeeID | LastName | DeptID |
|---|---|---|
| 101 | Smith | 10 |
| 102 | Jones | 20 |
DEPARTMENTS
| DeptID | DeptName |
|---|---|
| 10 | Accounting |
| 20 | HR |
| 30 | IT |
Query: INNER JOIN
Resultado:
| LastName | DeptName |
|---|---|
| Smith | Accounting |
| Jones | HR |
Observe: DeptID = 30 não aparece porque não há funcionário correspondente.
📈 Uso e Razão de Uso
-
Combinar tabelas relacionadas → RELACIONAL puro
-
Resumir informações em relatórios ou dashboards OLAP
-
Criar answer sets consistentes para análises
-
Fundamental para consultas em ERP, finanças e logística
No mainframe, INNER JOIN é usado em:
-
Batch → processa milhões de registros rapidamente
-
Online Transaction Processing (OLTP) → respostas rápidas e consistentes
⚡ Impacto na Performance e Otimização
-
Indexes importam muito:
-
JOIN em colunas indexadas = leitura rápida, menos I/O
-
Sem índice → DB2 faz table scan → lento em tabelas grandes
-
-
Estatísticas DB2:
-
RUNSTATSajuda o otimizador a escolher o caminho ideal
-
-
Número de tabelas no JOIN:
-
Mais joins = mais complexidade e consumo de CPU
-
Prefira joins em cascata controlados, evite joins desnecessários
-
-
Filtros antes do JOIN:
-
Use WHERE/qualificação para reduzir linhas antes do INNER JOIN
-
Isso diminui o volume de dados processados e acelera o batch
-
🔑 Comentários finais Bellacosa
-
INNER JOIN é a base do SQL relacional, especialmente no DB2 do mainframe.
-
Sintaxe explícita + colunas qualificadas + índices corretos = performance top de linha.
-
Mesmo em 2026, ele é indispensável em sistemas críticos da IBM.
-
Dica bônus: use EXPLAIN PLAN para ver como DB2 executa seus INNER JOINs.
💡 Easter Egg:
Por baixo do capô, o DB2 transforma cada INNER JOIN em Product + Selection + Projection na álgebra relacional — a magia acontece silenciosa enquanto você apenas digita
INNER JOIN.