Tej začeti temi dolgujem še odgovor, hkrati pa sem ugotovil, da sem napisal premalo informacij, ki bi lahko pomagale pri iskanju odgovora, tako da se posipam s pepelom. Hkrati pa mi nekaj pravi, da tu ni ravno ogromno .NET programerjev (ta moment se spomnim samo na @mckmck, @ms3 in @urosbe) :)
Kljub temu pa - če se komu (tudi naključnemu obiskovalcu) privarčuje kakšna ura živcev, je pa že nekaj vredno :)
Skratka, problem ni bil direktno na bazi, ampak v implementaciji .NET rešitve. Bottleneck celotni zadevi so bili objekti tipa DataTable (s katerimi rešitev pač operira). V "starejšem" delu kode (ki je bila napisana pred nekaj leti) se je filtriranje delalo s pomočjo DataTable metode .Select(). Kar je delovalo, dokler ni prišlo do ogromne količine podatkov.
Potem pa smo filtriranje prepisali na LINQ in odzivni časi so se zmanjšali na 10% prvotne vrednosti. Tako ja, na 10% (torej, na eno desetino - iz ~90s na ~8-9s) prvotnega časa. Z vsakim tweakanjem pa se ta čas še manjša, tako da gremo očitno v pravo smer :)