У меня одна таблица пакетов
Пакет содержит 2 поля id и всего
они оба имеют длину bigint 20 и первичные ключи
только идентификатор - автоинкремент
в каждой записи итого = id
у меня есть 10000 записей, скажем, id = 1 - 10000 и всего = 1 - 10000
я получил 2 почти идентичных запроса: 1 результат за очень долгое время загрузки, а один завершается почти мгновенно.
очень очень долгое время загрузки:
set @i = 0; <br />
SELECT *<br />
FROM packets as p1<br />
WHERE p1.total in ( SELECT p2.total<br />
FROM packets as p2 where ( ( @i := ( @i + 1 ) )
очень короткое время загрузки:
set @i = 0;<br />
SELECT *<br />
FROM packets as p1<br />
WHERE p1.id in ( SELECT p2.id<br />
FROM packets as p2 where ( ( @i := ( @i + 1 ) )
это происходит, когда значения id и total совпадают.