Вече внедрих два доста бързи начина за страниране на голяма таблица с база данни на MS SQL Server, която съдържа поне 1,000,000
записа, но не успях да определя плюсовете и минусите на нито един от методите, съветите за всеки от тях ще бъдат високо оценени:
Първият е да изпълните SQL заявката и да върнете само стойностите на първичния ключ на филтрираните записи, като посочите клауза TOP от може би 100-1000. След това те могат да бъдат поставени в променлива на сесията на уеб сървъра и съответно да бъдат преглеждани чрез предоставяне на подмножество от стойности на първичен ключ обратно на сървъра.
Една положителна страна за това е, че филтрирането на записите се случва само веднъж, когато потребителят първоначално извършва търсене и второ, дава възможност да прелиствате целия набор от записи един по един елемент, ако е необходимо, като например при визуализации на предстоящи записи, и т.н. Този метод също така предоставя някои предимства по отношение на по-нататъшното филтриране на вече филтрирани записи, тъй като опциите за филтриране могат да бъдат определени чрез предоставяне на списъка със стойности на първичен ключ обратно на SQL Server - като общи атрибути, заглавие, директори и т.н.
Втората опция е да извършите както филтрирането, така и странирането чрез SQL Server, предоставяйки променливи като „записи на страница“ и „номер на страница“ и т.н.
Ползата от това е, че няма нужда да задръствате уеб сървъра с потребителски сесии, чийто размер несъмнено ще бъде най-малко 1000+ байта всяка, което само ще причини проблеми в дългосрочен план, тъй като броят на потребителите на уеб сайта се увеличава. За разлика от това, недостатъците в крайна сметка са това, което изброих като положителни за първата опция, като например липсата на възможност за определяне на опции за филтриране за целия набор от записи, като има само една страница или подмножество от стойности на първичен ключ за работа с на уеб сървъра.
Какви са мислите на всички предвид горното, особено по отношение на съхраняването на стойностите на първичния ключ за резултатите в променлива на сесия, памет, алтернативни опции и т.н.?