За последние 24 часа нас посетили 22488 программистов и 1151 робот. Сейчас ищут 615 программистов ...

Составной индекс и WHERE IN ()

Тема в разделе "MySQL", создана пользователем UNSET, 28 авг 2016.

  1. UNSET

    UNSET Активный пользователь

    С нами с:
    28 авг 2016
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте. Помогите понять.

    Есть таблица tab: id(int) + col1(int) + col2(int) + col3(int) + col4(int)

    есть составной индекс COL :col1+col2+col3+col4

    и вот такой запрос:

    Код (Text):
    1.  
    2. SELECT *
    3. FROM `tab`
    4. WHERE
    5. col1 IN (1,6,9) AND
    6. col2=54 AND
    7. col3 IN (0,1) AND
    8. col4=5


    Правильно ли я понимаю, что здесь полностью используется индекс COL ? Несмотря на IN mysql просто еще раз обходит по индексу.

    EXPLAIN вроде говорит что это так -Using index conditionи показывает точно число строк.

    А вот если б было:

    Код (Text):
    1.  
    2. SELECT *
    3. FROM `tab`
    4. WHERE
    5. col1>0 AND
    6. col2=54 AND
    7. col3 IN (0,1) AND
    8. col4=5
    то индекс бы не использовался после col1.

    Так?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    пока не тормозит - не парься особо.