Это будет зависеть от количества уникальных значений и количества записей в таблице. Если вы просто ищете, является ли столбец пустым или нет, вам, вероятно, придется использовать один запрос и один, не зависящий от количества пустых значений в таблице в целом.
Например: если у вас есть таблица с 99% записей, столбец запросов имеет значение null, и вы поставили / имеете индекс для столбца, а затем выполните:
SELECT columnIndexed FROM blah WHERE columnIndexed is null;
Оптимизатор, скорее всего, не будет использовать индекс. Это не произойдет, потому что чтение индекса и последующее чтение связанных данных для записей будет стоить дороже, чем прямой доступ к таблице. Использование индекса основано на статистическом анализе таблицы, и одним из основных игроков в этом является количество значений. В целом, индексы работают лучше всего и дают лучшую производительность, когда они выбирают небольшое подмножество строк в таблице. Поэтому, если вы измените вышеуказанный запрос, чтобы выбрать, где columnIndexed не равно NULL, вы обязаны использовать индекс.
Для более подробной информации проверьте следующее: http://dev.mysql.com/doc/refman/5.1/en/myisam-index-statistics.html