Улучшено время выполнения запроса выбора SQL - PullRequest
0 голосов
/ 01 октября 2018

У меня следующий SQL-запрос, который выдает ошибку времени ожидания базы данных.

select distinct payment_gateway_id 
from tblPaymentGatewayLog 
where entity_id in (select entity_id from tblentityList)

tblPaymentGatewayLog имеет только около 10 записей, но tblentityList может иметь более 20000 записей, что делает запрос медленным.

Я попытался использовать внутреннее соединение вместо запроса IN, но все равно без разницы.Любой возможный способ улучшить время выполнения запроса?

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Exists быстрее, чем IN, а join вернет дубликаты записей.

мои предпочтения Exists:

select distinct payment_gateway_id 
from tblPaymentGatewayLog T1
where exists (select 1 from tblentityList T2 where T2.entity_id = T1.entity_id)
0 голосов
/ 01 октября 2018

Я тоже фанат exists:

select distinct gl.payment_gateway_id 
from tblPaymentGatewayLog gl
where exists (select 1 from tblentityList el where el.entity_id  = gl.entity_id);

Это все еще сложно, из-за select distinct.Итак, я также рекомендую индекс на (tblPaymentGatewayLog, entity_id).tblentityList настолько мал, что я не думаю, что индекс поможет.

0 голосов
/ 01 октября 2018
select distinct payment_gateway_id 
from tblPaymentGatewayLog pgl
where exists (select 1 from tblentityList el where el.entity_id = pgl.entity_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...