Проблема с cds.RecordCount - PullRequest
       22

Проблема с cds.RecordCount

3 голосов
/ 07 апреля 2011

Есть ли проблема с cds.RecordCount?

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

Но, разговаривая с колледжем, он сказал, что за это стоит штраф за производительность!

Я провел некоторый тест, и ничего особенного не произошло.

Так есть ли снижение производительности или какая-либо другая проблема с RecordCount?!

Если это так, как лучше всего проверить, есть ли какие-либо записи в запросе?

Спасибо

Ответы [ 2 ]

4 голосов
/ 07 апреля 2011

Если вы используете TClientDataSet (как, по-видимому, подразумевается в вашем «cds») с PacketRecords, установленным на -1 (по умолчанию) или FetchOnDemand, установленным на False, то никакой разницы нет, так как клиентский набор данных получает изагружает все данные в память одновременно.Разница будет заметна с другими наборами данных, которые извлекают данные по требованию, когда вы перемещаете курсор, использование RecordCount сначала извлечет все данные.В таких случаях лучше использовать свойство набора данных EOF после открытия - если все, что вам нужно, это узнать, был ли набор результатов пуст или нет.

3 голосов
/ 07 апреля 2011

Лучшим решением было бы выполнить запрос SELECT COUNT(*).

Если вам нужны все записи локально, вам следует установить для свойства FetchOnDemand значение False, или вы можете вызвать cds.Last прямо перед этим.cds.RecordCount.

Существует также метод cds.IsEmpty, если целью является проверка того, содержит ли набор данных записи ...

...