Como deixar consultas do Microsoft Access mais rápidas usando "Not Exists"

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.

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.

Créditos

Photo by Chander R on Unsplash

comments powered by Disqus

Read more