Джефф Этвуд говорит о SQL Server, а не о MySQL. Оптимизация SQL, как известно, зависит от СУБД, конфигурации, запроса, данных и состояния кэша. Если не считать, что выбор только полей первичного ключа будет, по крайней мере, таким же быстрым, как выбор всей строки, обобщить сложно. Конечно, трудно обобщить в какой-либо степени, что было бы полезно. Вам нужно будет сравнить ваш конкретный случай.
Исходя из моего опыта работы с MySQL, я был бы удивлен, если бы выбор деталей с запросом IN выполнялся быстрее, чем выполнение SELECT *
в первую очередь. Насколько я понимаю, SELECT *
дороже, чем SELECT id
, потому что MySQL должен искать данные индекса в обоих случаях, но в первом случае необходимо выполнить дополнительный шаг выборки данных, составляющих остальную часть строки, что может потребовать дополнительного поиска на диске (тем более что данные таблицы с меньшей вероятностью будут в кеше, чем индекс). Однако с кластеризованным индексом InnoDB (первичным ключом будет, если вы используете InnoDB), существует особый случай, когда данные хранятся вместе с записью индекса в кластерном индексе. Я полагаю, что в этом случае скорость SELECT *
будет почти такой же, как у SELECT id
.