Подкачка страниц данных в CE SQL Server (Компактный Выпуск)

Мне также нравится он причина, я могу считать его как "Я поведение глагола" как в "ICanSave" или "IDoDoubleEntry" и т.д.

12
задан Neil 31 July 2009 в 04:20
поделиться

2 ответа

Сокращения ложатся гораздо большей нагрузкой на читателя. Они неоднозначны; они косвенные; их труднее различить. Они обременяют и писателя, потому что он / она всегда должны спрашивать: «Это Cmd для Command, или Cmnd ... или Cm?». Они конфликтуют - данное правило сокращения может привести к одному и тому же сокращению для двух (или более) разных слов.

Поскольку они неоднозначны, читатель должен найти время, чтобы подумать, какое слово имеет в виду; если присутствует само слово, читателю нужно только подумать о его значении.

Поскольку они косвенные, они аналогичны указателю - точно так же, как на каждое разыменование указателя требуется небольшое время обработки, есть и небольшое (человеческое) время обработки и дополнительная память, занимаемая каждым сокращением.

и можете прочитать еще 10. Если вам нужно вернуться назад, вы можете либо кэшировать свои результаты, либо переключиться на SqlCeResultSet , который поддерживает поиск .

Кроме того, SqlCeDataReader / Result, по опыту, является самым быстрым способом взаимодействия с базой данных на рабочем столе. Это может быть буквально в 100 раз быстрее, чем при использовании DataSets / DataAdapters.

2
ответ дан 26 October 2019 в 11:50
поделиться

I'm also currently working on a WPF application which uses SQL Server CE as the persistence mechanism. We have several (40+) tables and some of them are pretty big (50k records, at least that's big for my standards).

My advice about data paging directly in SQL CE is this: avoid it if you can! I have used the approach described by Bob King, and at least for me it resulted in Very Ugly code, a real maintenance nightmare.

Unless you'll need to page over tens of thousands of records, I believe the best approach is to load them all using SqlCeDataReader into a collection of custom classes and then page over the collection in memory. I found this approach to be more responsive than re-executing the SQL query every time, even with caching. What happened is that in my case the queries were fairly complex, and SqlCeDataReader performance was good enough so that the performance hit was almost imperceptible. No need to point that, after the first batch load, every page change happens almost instantaneously because everything is kept in memory.

The general opinion of my users were that it's ok to wait a little longer for the first results to appear, if that's going to lead to faster paging afterwards. And using LINQ, paging is as easy as calling Skip and Take methods. I have implemented this logic inside a Pager class, making it very DRY and nice.

5
ответ дан 26 October 2019 в 11:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: