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