За последние 24 часа нас посетили 17572 программиста и 1727 роботов. Сейчас ищут 1025 программистов ...

По какому принципу работают значения в операторе WHERE

Тема в разделе "MySQL", создана пользователем boo, 17 мар 2010.

  1. boo

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

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    Есть такой запрос:
    PHP:
    1.  
    2. $list = ' and a.id NOT IN (SELECT id_list FROM list WHERE value="' . $show . '" )';
    3. $q = mysql_query( 'SELECT * FROM `table_a` a, `table_b` b WHERE a.status="1" and b.status="1" and a.id=b.show ' . $list . ' ORDER BY b.show DESC' );
    4.  
    очень загружает базу mysql такой запрос.
    размеры баз:
    table_a ~ 10 000
    table_b ~ 10 000
    list ~ 1 000
    Так вот я думаю может правильнее сначала выполнить запрос без $list, а потом уже удалить из запроса всё что есть в $list

    т.е. не будет ли быстрее:
    PHP:
    1.  
    2. $q = mysql_query('SELECT * FROM table WHERE a=$1');
    3. //и затем выбрать b=$2 из массива
    4.  
    чем это:
    PHP:
    1.  
    2. $q = mysql_query('SELECT * FROM table WHERE a=$1 and b=$2')
    3.  
    Это конечно упрощено, но для моего случая как сделать оптимально?
     
  2. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Где explain?

    Индексы стоят?
     
  3. boo

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

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    PRIMARY и auto_increment - на id

    интересует этот конкретный случай, и во общем когда стоят в WHERE - AND сравнивается все значения сразу? или сначала первое, если подходит затем 2ое и т.д.
     
  4. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    auto_increment - это вообще не индекс.

    Но на будущее, для быстрого выполнения запросов должны быть индексы на все(или большинство) полей участвующих в WHERE

    Там все происходит несколько иначе, если, конечно, есть индексы, если индексов нет, то это очень долго, независимо от того как они сравниваются.
     
  5. boo

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

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    спасибо, не знал про explain. Пошёл проверять