Вы можете профилировать свое приложение с помощью node-tick .
node-tick
с помощью sudo npm -g install tick
node --prof ./app.js
node-tick-processor
и объяснить результаты Хотя я согласен с другими, что вы можете использовать count ()
для получения общего количества строк, вот как вы можете использовать row_count ()
:
Чтобы получить общее количество строк:
с темпом как (
выберите row_number () поверх (порядок по идентификатору) как rownum
из table_name
)
выберите max (rownum) from temp
Чтобы получить номера строк, где имя Matt:
с temp как (
выберите имя, row_number () поверх (по идентификатору) как rownum
из table_name
)
выберите rownum from temp, где назовите "Matt"
. Вы также можете использовать min (rownum)
или max (rownum)
, чтобы получить первую или последнюю строку для Matt соответственно.
Это были очень простые реализации row_number ()
. Вы можете использовать его для более сложной группировки. Ознакомьтесь с моим ответом на Расширенная группировка без использования подзапроса
Если вам нужно вернуть общее количество строк таблицы, вы можете использовать альтернативный способ для оператора SELECT COUNT (*)
.
Поскольку SELECT COUNT (*)
выполняет полное сканирование таблицы, чтобы вернуть количество строк, это может занять очень много времени для большой таблицы. В этом случае вы можете использовать системную таблицу sysindexes
. Есть столбец ROWS
, который содержит общее количество строк для каждой таблицы в вашей базе данных. Вы можете использовать следующий оператор выбора:
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('table_name') AND indid < 2
Это значительно сократит время выполнения запроса.
На первый вопрос, почему не просто использовать?
SELECT COUNT(*) FROM myTable
, чтобы получить счет.
И что касается второго вопроса, первичный ключ строки - это то, что следует использовать для идентификации конкретной строки. Не пытайтесь использовать для этого номер строки.
Если вы вернули Row_Number () в основном запросе,
Для первого вопроса, почему бы просто не использовать?
SELECT COUNT(*) FROM myTable
, чтобы получить счет.
А для Второй вопрос, первичный ключ строки - это то, что следует использовать для идентификации конкретной строки. Не пытайтесь использовать для этого номер строки.
Если вы вернули Row_Number () в своем основном запросе,
SELECT ROW_NUMBER() OVER (Order by Id) AS RowNumber, Field1, Field2, Field3
FROM User
Затем, когда вы хотите вернуться на 5 строк назад, вы можете взять текущий номер строки и использовать следующий запрос для определения строки с currentrow -5
SELECT us.Id
FROM (SELECT ROW_NUMBER() OVER (ORDER BY id) AS Row, Id
FROM User ) us
WHERE Row = CurrentRow - 5