Оптимизировать простой запрос JOIN или IN - PullRequest
0 голосов
/ 07 октября 2010

У меня есть этот запрос:

SELECT DISTINCT id, 
                label 
FROM   bbproduct_cust 
WHERE  CUSTNO IN (SELECT CUSTNO 
                  FROM   customer 
                  WHERE  SLSRPTGRP = '1996') 
       AND DEPTNO = '0' 
ORDER  BY label ASC 

EXPLAIN показывает

id  select_type         table           type  possible_keys          key            key_len  ref    rows   Extra                                         
1   PRIMARY             bbproduct_cust  ALL   ind_deptno                                            91834  Using where; Using temporary; Using filesort  
2   DEPENDENT SUBQUERY  customer        ref   PRIMARY,ind_slsrptgrp  ind_slsrptgrp  3        const  4      Using where                                   

это занимает 2-3 секунды, и мне нужно его оптимизировать.

Чтоварианты у меня есть?

Ответы [ 2 ]

1 голос
/ 07 октября 2010

Используйте INNER JOIN вместо IN select

Что-то вроде

SELECT DISTINCT id, 
                label 
FROM   bbproduct_cust INNER JOIN
        customer ON  bbproduct_cust.CUSTNO = customer.CUSTNO
WHERE  SLSRPTGRP = '1996'
       AND DEPTNO = '0' 
ORDER  BY label ASC
0 голосов
/ 07 октября 2010

Используйте индекс для повышения производительности. Нажмите здесь для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...