Оптимизировать простой запрос JOIN или IN

0

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

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 секунды, и мне это нужно оптимизировать.

Какие у меня есть варианты?

Теги:
join
subquery

2 ответа

1
Лучший ответ

Используйте INNER JOIN, а не IN, выберите

Что-то вроде

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
    Тогда может показаться, что у вас нет правильного индекса для таблицы bbproduct_cust
  • 0
    это была опечатка .. спасибо за помощь
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню