Я хотел бы подсчитать количество строк в операторе, возвращаемом запросом. Единственные решения, которые я нашел, были:
- sqlsrv_num_rows() Это кажется слишком сложным для такой простой задачи, как эта, и я читал, что это немного замедляет выполнение
- Выполнение запроса с помощью SELECT COUNT Этот метод кажется ненужным, кроме того, он замедляет выполнение, и если у вас уже есть оператор, зачем возиться с другим запросом.
- Подсчет строк при создании таблицы Поскольку мне нужно сгенерировать html-таблицу из оператора, я мог бы поместить переменную в цикл генерации таблицы и увеличить ее на единицу, но это работает только тогда, когда у вас уже есть для перебора всего оператора.
Мне не хватает какой-то фундаментальной функции и/или знания, или нет более простого способа?
Любая помощь или руководство приветствуются.
EDIT: Возвращаемый оператор является лишь небольшой частью исходной таблицы, поэтому было бы нецелесообразно выполнять другой запрос для этой цели.
sqlsrv_num_rows
замедляется? Кроме того, на мой взгляд, использованиеsqlsrv_num_rows
требует тех же усилий, что и использованиеselect @@rowcount
, если вам нужны и результаты, и подсчет, потому что вам нужно использоватьsqlsrv_next_result
, а затемsqlsrv_fetch
(возможно, больше усилий), чтобы получить подсчет. - person alpakyol   schedule 21.07.2015sqlsrv_num_rows
на используемой таблице в реальном времени. В цикле 100 раз я вызвал запрос, который возвращает ок. 150 рядов. Нет существенной разницы во времени междуsqlsrv_num_rows
и увеличением счетчика в циклеwhile
с помощьюsqlsrv_fetch()
. Однако на очень загруженных серверах он может отличаться. - person alpakyol   schedule 21.07.2015