Для вашего вопроса № 1: Зависит от того, как вы ищете «мяч». Если в столбце (столбцах), в котором вы ведете поиск, нет индекса, тогда должна быть прочитана вся таблица. Если есть индекс, то ...
WHERE field LIKE 'ball%'
будет использовать индекс
WHERE field LIKE '%ball%'
будет НЕ использовать индекс
Для вашего # 2, подумайте об этом следующим образом: Выполнение SELECT * FROM table
и последующее изучение результатов в вашем приложении - это то же самое, что пойти в местный супер Walmart, загрузить полный инвентарь магазина в вашу машину и отвезти его домой. , выбирая каждую коробку / упаковку, и выбрасывая все, кроме пачки жевательной резинки из стойки для импульсной покупки, до тех пор, пока вы не захотели сначала. Весь смысл базы данных состоит в том, чтобы упростить поиск данных и их фильтрацию по любому виду предложения, о котором вы только могли подумать. Перетаскивая все в ваше приложение и выполняя там фильтрацию, вы сократили эту блестящую базу данных до очень дорогого дискового интерфейса, и, вероятно, было бы лучше хранить вещи в плоских файлах. Вот почему есть предложения WHERE. «ВЫБЕРИТЕ что-нибудь из магазина ГДЕ type = pack_of_gum» дает вам только жвачку и не заставляет вас отвезти домой несколько тысяч бутылок шампуня и мешки с кошачьим мусором.
Для вашего # 3, да. Если в запросе LIMIT есть предложение ORDER BY, результирующий набор должен быть отсортирован, прежде чем база данных сможет выяснить, какими должны быть эти 5 записей. Хотя это не так плохо, как фактическая передача всего набора записей в ваше приложение и выбор только первых пяти записей, он все же включает в себя немного больше работы, чем просто получение первых 5 записей, соответствующих предложению WHERE.