По этому вопросу, я ищу быстрый способ подсчитать количество записей в таблице без просмотра таблицы с тем, где состояниечто это самый быстрый способ получить запись таблицы подсчитывать с условием на SQL Server
ответ
Просто убедитесь, что ваш таблица правильно проиндексирована для условия where.
Если вы обеспокоены такого рода производительности подход заключается в создании индексов, которые включают поле в вопросе, например, если таблица содержит первичный ключ обув, а затем поля бар, попугай и кустарника и вы знаете, что вы собираетесь нужно тянуть обратно запись регулярно, используя условие на основе кустарника что просто нужны данные из этого поля вы должны создать соединение индекс [кустарника, Foo ]. Таким образом, rdbms должен запрашивать только индекс, а не таблицу. Индексы, являющиеся древовидными структурами, намного быстрее запрашивают, чем сама таблица.
Какова действительная активность, необходимая rdbms, зависит от самого rdbms и именно от той информации, которую она помещает в индекс. Например, выберите счетчик () * в неиндексированной таблице, не использующей условие where, которое будет в большинстве случаев возвращено большинству rdbms, поскольку количество записей будет удерживаться на уровне таблицы, а сканирование таблицы не требуется. Аналогичные соображения могут иметь место для доступа к индексу.
Помните, что индексы несут накладные расходы на обслуживание, поскольку при обновлении поля rdbms также должно обновлять все индексы, содержащие это поле. Это может быть или не быть критическим соображением, но нет ничего необычного в том, чтобы видеть таблицы, в которых читается большинство операций, а активность вставки/обновления/удаления имеет меньшее значение, которые сильно индексируются в различных комбинациях полей таблицы, так что большинство запросов будут просто использовать индексы и не касаться собственно данных таблицы.
ADDED: Если вы используете индексированный доступ к таблице, которая имеет значительную активность IUD, просто убедитесь, что вы планируете регулярное обслуживание. Древовидные структуры, т. Е. Индексы, наиболее эффективны при сбалансированном и значительном периодическом обслуживании активности UID, чтобы сохранить их таким образом.
Спасибо. В моей таблице будет много активности вставки/удаления (около 50 к-60 кет в день), вы бы посоветовали вам тяжелый индекс? Я знаю, что вы объяснили во второй части своего ответа, но я не понимаю его (английский не мой родной язык) – nLL
50-60k в день не много. За 24 часа 86400 секунд, так что 60 000, что меньше одного изменения в секунду (при условии, что это приложение используется равномерно в течение дня). Каковы часы пик? Есть ли время, когда приложение не используется? Не зная схему таблиц, шаблоны использования и т. Д., Говоря, что данный индекс хорош или нет, невозможно. Общая рекомендация: сохранить количество индексов на таблице до минимума и количество столбцов в этой таблице только для тех, которые необходимы. –
@rangerchris - свести число индексов на столе к минимуму - к тому же, оно просто достигает наиболее эффективного набора индексов для любого конкретного набора обстоятельств, который является сложным битом, и этот минимум отнюдь не всегда 1 , – Cruachan
Существуют различные методы, наиболее надежным один является
Select count(*) from table_name
Но кроме этого вы также можете использовать один из следующих
select sum(1) from table_name
select count(1) from table_name
select rows from sysindexes where object_name(id)='table_name' and indid<2
exec sp_spaceused 'table_name'
DBCC CHECKTABLE('table_name')
Последние 2 необходимо sysindexes обновить, запустите для достижения этого, если вы не обновляете их, очень вероятно, что это даст вам неправильные результаты, но для приближения они могут действительно работать.
DBCC UPDATEUSAGE ('database_name','table_name') WITH COUNT_ROWS.
EDIT: извините, я не читал часть о подсчете по определенному пункту. Я согласен с Cruachan, решение вашей проблемы - это правильные индексы.
Список следующих страниц 4 метода получения количества строк в таблице с комментариями о точности и скорости.
Это один Management Studio использует:
SELECT CAST(p.rows AS float)
FROM sys.tables AS tbl
INNER JOIN sys.indexes AS idx ON idx.object_id = tbl.object_id and idx.index_id < 2
INNER JOIN sys.partitions AS p ON p.object_id=CAST(tbl.object_id AS int)
AND p.index_id=idx.index_id
WHERE ((tbl.name=N'Transactions'
AND SCHEMA_NAME(tbl.schema_id)='dbo'))
- 1. Каков самый быстрый способ получить DataTable в SQL Server?
- 2. Каков самый быстрый способ очистки таблицы SQL?
- 3. Linq to SQL самый быстрый способ получить одну запись
- 4. Самый быстрый способ определить, существует ли запись
- 5. Самый быстрый способ распечатать это на python?
- 6. Самый быстрый протокол SQL Server?
- 7. Подсчитывать строки против таблицы SQL Server (2005)?
- 8. Самый быстрый способ клонирования строки в SQL
- 9. Каков самый быстрый способ обновить рабочий лист из SQL Server
- 10. Какой самый быстрый способ получить подкап карты
- 11. Самый быстрый способ импорта?
- 12. Самый быстрый способ получить единственную запись с SubSonic
- 13. MS SQL Server самый быстрый способ изменения определения столбца
- 14. Самый быстрый способ узнать, существует ли запись
- 15. SQL Server - Вставить запись подсчитывать в таблицу
- 16. что это самый быстрый способ обновить тысячи строк в MySQL
- 17. Самый быстрый способ вставить 100000 записей в SQL Server
- 18. Самый быстрый способ «игнорировать» строку
- 19. Самый быстрый способ получить подмножество (200M) из очень большой таблицы (600M) в SQL Server
- 20. Самый быстрый способ удалить содержимое таблицы
- 21. Самый быстрый способ получить LayoutInflater
- 22. Mysql подсчитывать с условием
- 23. Какой самый быстрый способ получить запись ряда данных?
- 24. Самый быстрый способ узнать, доступен ли SQL Server
- 25. Самый быстрый способ получить 8101 значений строк?
- 26. внедрение базы данных SQL Server - самый быстрый способ найти значения
- 27. Самый быстрый способ сериализации DataSet в таблице SQL Server
- 28. Каков самый быстрый способ проверить наличие сервера SQL Server?
- 29. Самый быстрый способ петли через SQL-запрос
- 30. Самый быстрый способ получить случайную запись из базы данных
Не могли бы вы объяснить немного дальше, пожалуйста? Вы только что искали: select count (*) from tablename Возможно, с помощью «с (nolock)» –
I ahve larga table, в которой мне нужно выбрать количество записей. Скажите выберите count (id) от пользователя, где active = 1 Я ищу способ подсчета записей без полного сканирования таблицы, я нашел несколько образцов, которые получают все счетчики записей из индексов sys, но не уверены, возможно с условием – nLL
@nLL: вы должны отредактировать свой вопрос, чтобы добавить эту дополнительную информацию. –