Зависи от много фактори - но най-важното:
- сложност на изчисленията (предпочитайте да правите сложно хрускане на сървър на приложения, тъй като това се намалява; вместо db сървър, който се мащабира нагоре )
- обем данни (ако трябва да получите достъп/агрегирате много данни, правенето на това на db сървъра ще спести честотна лента и диск io, ако агрегатите могат да се извършват в индекси)
- удобство (sql не е най-добрият език за сложна работа - особено не е страхотен за процедурна работа, но е много добър за работа, базирана на набори; отвратителна обработка на грешки обаче)
Както винаги, ако направите върнете данните обратно към сървъра на приложения, като минимизирането на колоните и редовете ще бъде във ваша полза. Уверяването, че заявката е настроена и индексирана по подходящ начин, ще помогне и на двата сценария.
Отново вашата бележка:
и след това прегледайте записите
Приключване чрез записи почти винаги е погрешно нещо в sql - за предпочитане е писането на базирана на набор операция.
Като общо правило , предпочитам да свеждам работата на базата данни до минимум „съхранявайте тези данни, извличайте тези данни“ – обаче винаги има примери за сценарии, при които елегантна заявка към сървъра може да спести много честотна лента.
Също така помислете:ако това е скъпо изчислително, може ли да се кешира някъде?
Ако искате точно "кое е по добре"; кодирайте го и по двата начина и го сравнете (като се отбележи, че първата чернова на нито един от тях вероятно не е 100% настроена). Но вземете предвид типичната употреба:ако в действителност се извиква 5 пъти (отделно) наведнъж, тогава симулирайте това:не сравнявайте само едно „1 от тези срещу 1 от тези“.