2016-11-23 4 views
0

Мне просто интересно, какое утверждение более эффективно. Я просматриваю список UUID (может быть до 40 UUID) и SELECTing каждый раз. Вместо этого следует использовать:Несколько вариантов выбора по сравнению с одним выбором, где OR

 SELECT * FROM `player_table` WHERE `playeruuid`=uuid1 OR `playeruuid`=uuid2 OR `playeruuid`=uuid3; 

Затем проведите через результирующий набор?

+1

В этом случае вы должны использовать 'IN'. –

+1

'uuid1',' uuid2', ... это строковые литералы или столбцы? –

+0

@Prdp Строковые литералы –

ответ

1

Использование IN(), который имеет лучшую производительность:

SELECT * FROM `player_table` WHERE `playeruuid` IN(uuid1,uuid2,uuid3); 

Другое то, что трудно сказать, что является более эффективным без тестирования.

+0

Возможно, вы захотите объяснить, почему. –

+1

'OR' оптимизирован в' IN'. Таким образом (по крайней мере, в последних нескольких версиях) разница в производительности отсутствует. Вы можете «доказать» это, выполнив «FLUSH STATUS»; ВЫБРАТЬ ...; SHOW SESSION STATUS LIKE 'Handler%'; ' –

+0

О, хорошо, я довольно новичок в MySQL, поэтому я мало что знаю об этом. Благодаря! –

Смежные вопросы