> Доброго времени суток!
> Есть таблица. И два запроса:
> select id FROM articles WHERE id in ( 45, 46);
> select id FROM articles WHERE id IN(SELECT 45 union SELECT 56);
> В первом случае стоимость (cost) 1.82. В таблице articles используется Primary Index
> и идет Index Range Scan .
> Во втором случае стоимость (cost) 2003.22. В таблице используется другой индекс и
> идет Full Index Scan.Какой "другой" ?
> Откуда такая разница
На момент составления плана выполнени запроса- количество возвращаемых подзапросом значений неизвестно. И оптимизатор берет необходимые параметры "с потолка". Проведя достаточное колдичество экспериментов с разными данными - вы поймете что статистически - он прав.
> и как заставить второй запрос использовать Primary Index?
для конкретно двух этих значений?