Похоже, вы делаете до 26 запросов, которые никогда не будут быстрыми. Часто один запрос БД может занять не менее 40 мс из-за задержки в сети, установления соединения и т. Д. Таким образом, выполнение этого 26 раз означает, что это займет около 40 x 26 мс или более одной секунды. Конечно, это может занять гораздо больше времени в зависимости от вашей схемы, набора данных, оборудования и т. Д., Но это практическое правило, которое дает вам приблизительное представление о влиянии запросов на общее время отображения страницы.
Один из способов справиться с такой ситуацией - использовать DataTable
. Извлеките все записи в DataTable
, а затем вы можете выполнить итерацию по алфавиту и использовать метод Select
для фильтрации.
DataTable myData = GetMyData();
foreach(string letter in lettersOfTheAlphabet)
{
myData.Filter(String.Format("Name like '{0}%'", letter));
//create your link here
}
В зависимости от уровня модели вы можете фильтровать по-разному, но это основная идея, которая должна значительно улучшить производительность.
Предполагая, что вы запрашиваете, какие буквы используются, чтобы вы знали, какие ссылки отображать, вы могли бы просто запросить сами буквы, например:
select distinct substring(ManufacturerName, 1, 1) as FirstCharacter
from MyTable
order by 1