Все быстрее, чем счет (1) от Tablea, чтобы найти счетчики строки?

StackOverflow https://stackoverflow.com/questions/3759817

  •  04-10-2019
  •  | 
  •  

Вопрос

Есть ли что-нибудь, из которой мы можем быстрее получить нет. рядов в таблице вместо того, чтобы использовать счет (1). Далее есть два случая:

а) Когда мы хотим получить нет. рядов в таблице.

б) Когда мы просто хотим знать, есть ли хотя бы один ряд.

Заранее спасибо.

Это было полезно?

Решение

а) Вы можете получить счетчики строки в таблицах от системных таблиц, 1 пример в соответствии с имеем URI Блог пост здесь.

б) Я всегда использовал существую:

IF EXISTS(SELECT * FROM YourTable)

Другие советы

б) Когда мы просто хотим, знаю, если есть хотя бы один ряд.

SELECT TOP 1 myField FROM myTable [WHERE .....]

Знать счет всех строк в таблице, не сканируя их, вы можете использовать

select SUM(row_count) AS row_count
from sys.dm_db_partition_stats
where object_id = object_id('dbo.tblName')
    and index_id < 2

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

б) Linq-to-sql генерирует

EXISTS (SELECT NULL FROM Table....)

а) Нет

б) вы можете использовать exists Функция, которая проверяет только, есть ли результат и на самом деле не получает результат.

Есть этот подход, используя SysObjects и Sysindexes:

Подсчет строк для всех таблиц сразу

Это работало хорошо для меня в прошлом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top