Есть такой запрос: PHP: $list = ' and a.id NOT IN (SELECT id_list FROM list WHERE value="' . $show . '" )'; $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' ); очень загружает базу mysql такой запрос. размеры баз: table_a ~ 10 000 table_b ~ 10 000 list ~ 1 000 Так вот я думаю может правильнее сначала выполнить запрос без $list, а потом уже удалить из запроса всё что есть в $list т.е. не будет ли быстрее: PHP: $q = mysql_query('SELECT * FROM table WHERE a=$1'); $r = mysql_fetch_assoc($q); //и затем выбрать b=$2 из массива чем это: PHP: $q = mysql_query('SELECT * FROM table WHERE a=$1 and b=$2') Это конечно упрощено, но для моего случая как сделать оптимально?
PRIMARY и auto_increment - на id интересует этот конкретный случай, и во общем когда стоят в WHERE - AND сравнивается все значения сразу? или сначала первое, если подходит затем 2ое и т.д.
auto_increment - это вообще не индекс. Но на будущее, для быстрого выполнения запросов должны быть индексы на все(или большинство) полей участвующих в WHERE Там все происходит несколько иначе, если, конечно, есть индексы, если индексов нет, то это очень долго, независимо от того как они сравниваются.