Como deixar consultas do Microsoft Access mais rápidas usando "Not Exists"
Este post foi originalmente publicado em https://officevbavsto.blogspot.com/2011/05/quickshot-deixando-consulta-mais-rapida.html.
Quem aqui que usa Access nunca precisou fazer uma consulta usando o critério “Not In”? Pois é, e quem trabalha com um grande volume de dados sabe que quando se usa esse critério, pode ir tomar um café porque isso vai demorar, principalmente se realizar busca por texto.
A expressão abaixo retorna quais a linhas da tabela EMPRESA não estão cadastradas na tabela TABELA_SOCIOS, sem a utilização do NOT EXISTS
, mas utilizando o NOT IN
- isto é somente um exemplo para se comparar as duas maneiras de executar a mesma operação.
SELECT * FROM EMPRESAS
WHERE EMPRESAS.CD_EMPRESA NOT IN (SELECT TABELA_SOCIOS.CD_EMPRESA FROM TABELA_SOCIOS WHERE EMPRESAS.CD_EMPRESA = TABELA_SOCIOS.CD_EMPRESA)
A expressão abaixo retorna quais a linhas da tabela EMPRESA não estão cadastradas na tabela TABELA_SOCIOS utilizando o NOT EXISTS
.
SELECT * FROM EMPRESAS WHERE NOT EXISTS (SELECT TABELA_SOCIOS.CD_EMPRESA FROM TABELA_SOCIOS WHERE EMPRESAS.CD_EMPRESA = TABELA_SOCIOS.CD_EMPRESA)
Normalmente, DBAs recomenda o uso do NOT EXISTS
, ao invés de NOT IN
, por questões de performance.