Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];
ВнизКак подбить количество возращаемых записей? Найти похожие ветки
← →
YuraKiller (2003-05-25 15:38) [0]Мне нужно узнать количество записей результатирующего набора.
Как это можно красиво сделать?
Запрос например:select * from main where type=10 and code>100
Как это можно сделать не посылая :select count(*) from main where type=10 and code>100
ещё раз.
Может есть какое-то свойство или оператор?...
← →
Engel (2003-05-25 15:41) [1]query.recordcount
← →
Sergey Masloff (2003-05-25 20:17) [2]>Как это можно сделать не посылая : select count(*) from main >where type=10 and code>100 ещё раз.
Все остальные способы приводят к фетчу ВСЕХ записей на клиента. Так что хорошо подумай, может стоит сделать select count(*) и узнать что там таких записей полтора миллиона или узнать об этом же после получаса ожидания пока они тебе на клиента приползут?
← →
DrPass (2003-05-25 21:44) [3]select count(*) - это и есть самый красивый и разумный вариант
← →
YuraKiller (2003-05-27 01:33) [4]Пасибо!
← →
Verg (2003-05-27 08:46) [5]Если транзакция readcommited,
select * from main where type=10 and code>100
... а здесь в другой транзакции в main были добавлены/удалены записи удовлетворяющие условию и сделан commit, то
select count(*) from
main where type=10 and code>100 ещё раз.
...будет ли результат второго запроса равен колечеству выбранных записей в первом?
← →
Danilka (2003-05-27 08:54) [6]Verg © (27.05.03 08:46)
угу, и для "обьективной реальности" остается только уйти нафиг с IB на сервак поддерживающий транзакции Dirty Read, и на нем уже делать count(*)
;))
← →
Alexandr (2003-05-27 09:01) [7]2Verg © если очень хочется, сделай repeatableRead транзакцию.
2Danilka © DBF? Paradox? Все что вы пишите есть бред сивой кобылы.
← →
Verg (2003-05-27 09:06) [8]
> Alexandr © (27.05.03 09:01)
Мне-то чего хочется?
Вопрос по-моему "простой" - где берут RowsAffected в IB?
← →
Danilka (2003-05-27 09:11) [9]Alexandr © (27.05.03 09:01)
тема ветки, вообще-то IB5.x
к тому-же, похоже, даже смайлики не на всех действуют :))
← →
Danilka (2003-05-27 09:19) [10]Alexandr © (27.05.03 09:01)
Ладно, разжую, там где есть транзакции, невозможно на 100% с уверенностью сказать, сколько реально записей в таблице в данный момент.
Конечно, таблицы и задачи, в которых идет вставка новых записей несколько штук в секунду очень-очень редки, и в любом случае, для них нет необходимости смотреть кол-во записей.
В то-же время, при наличии даже двух пользователей есть какая-то вероятность, что количество, например, счетов-фактур через секунду будет на 1 больше, чем только-что показал count(*)
Да и там где транзакций нет, тоже нельзя с 100% уверенностью сказать что секунду назад сделаное count(*) - правильное. :))
← →
Orlan Master (2003-05-27 13:41) [11]На всякий случай: именно там, где есть транзакции, можно с уверенностью сказать, сколько записей было на момент транзакции. Просто операцию по расчету кол-ва записей необходимо производить ВНУТРИ ОДНОЙ И ТОЙ ЖЕ ТРАНЗАКЦИИ, а уровень изоляции не должен быть DirtyRead (ReadUncommited). Для MSSQL, например, если выборка делается из хранимки, то можно кол-во записей впендюрить в переменную, и ее значение считать непосредственно из переменной. Иными словами, из хранимки можно одновременно получить и селектовую выборку и значения возвращаемых переменных.
М.б. в IB есть нечто похожее.
← →
YuraKiller (2003-05-28 00:50) [12]Да.., ну Вы и бадягу замесили.. :-))
← →
Proton (2003-05-28 07:55) [13]Наверное в данном случае пользователя устроит "приблизительное" количеество записей. А если он будет выводить данные то он всегда сможе использовать recordcount.
← →
Danilka (2003-05-28 08:00) [14]Proton © (28.05.03 07:55)
Ладно, признаюсь, с моей стороны все посты в этой ветке - просто флуд, сначала на:
Verg © (27.05.03 08:46)
на то утверждение, что если одна транзакция меняет данные, то транзакция стартовавшая раньше их не видит, я начал флудить что в могопользовательских БД всегда есть вероятность того, что данные устарели.
Можно их смело прибить.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c