Способы подсчета количества записей в каждой из таблиц базы данных. Количество записей в таблице ms sql
Как узнать количество записей в SQL-выборке
Вы здесь: Главная - MySQL - SQL - Как узнать количество записей в SQL-выборке
Очень часто нам не требуется извлекать данные из таблицы, однако, нам необходимо узнать количество записей в определённой SQL-выборке, в частном случае, количество записей в таблице. Вот как узнать количество записей в SQL-выборке, я расскажу в этой небольшой статье.
На самом деле всё очень просто, и нам нужна всего лишь функция COUNT():
SELECT COUNT(*) FROM `table` WHERE `field_1`='value_1'После выполнения данного запроса будет возвращён result_set, в котором будет храниться массив, содержащий элемент COUNT(*) со значением количества записей в таблице "table", где поле "field_1" имеет значение "value_1".
Другой пример. Допустим, надо узнать просто количество записей. Тогда то же самое, но без WHERE:
SELECT COUNT(*) FROM `table`Вот такой нехитрой функцией COUNT() можно легко узнавать количество записей в SQL-выборке, не извлекая при этом сами записи и экономя ресурсы.
Полный курс по PHP и MySQL: http://srs.myrusakov.ru/php
- Создано 12.03.2012 12:53:32
- Михаил Русаков
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
-
Кнопка:
<a href="https://myrusakov.ru" target="_blank"><img src="https://myrusakov.ru//images/button.gif" alt="Как создать свой сайт" /></a>
Она выглядит вот так:
-
Текстовая ссылка:<a href="https://myrusakov.ru" target="_blank">Как создать свой сайт</a>
Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи): [URL="https://myrusakov.ru"]Как создать свой сайт[/URL]
myrusakov.ru
Способы подсчета количества записей в каждой из таблиц базы данных | MS SQL Server | Статьи | Программирование Realcoding.Net
В этой статье рассматриваются несколько способов, с помощью которых можно подсчитать количество записей в таблицах базы данных MS SQL Server.
Способ 1: Поскольку приведенный ниже sql-код для подсчета количества записей использует таблицу sysindexes, его результат зависит от того, была ли обновлена статистика.
T-SQL:
select substring(o.name, 1, 30) Table_Name ,i.rows Number_of_Rowsfrom sysobjects oinner join sysindexes ion (o.id = i.id)where o.xtype = 'u'and i.indid < 2order by o.name
В приведенном примере xtype = 'u' используется для выбора объектов типа "таблица", а использование indid < 2 гарантирует выборку всех таблиц (как имеющих, так и не имеющих индексы).
Способ 2: Следующий sql-код также может быть использован для определения количества записей в таблицах базы данных. Для подсчета числа строк этот sql-код использует функцию агрегации. Обрамление кавычками выбранного названия таблицы необходимо для обработки пробелов в названии (если такие названия существуют).
T-SQL:
SET NOCOUNT ON DECLARE tables_cursor CURSOR FOR SELECT name FROM sysobjects WHERE type = 'U' order by 1 OPEN tables_cursor DECLARE @tablename varchar(50)
FETCH NEXT FROM tables_cursor INTO @tablename
WHILE (@@fetch_status <> -1) BEGIN select @tablename = quotename(@tablename, '[]') DECLARE @CMD VARCHAR(100) PRINT @TABLENAME SELECT @CMD = ' select count(*) from '+@tablename+' ' EXEC (@CMD)
FETCH NEXT FROM tables_cursor INTO @tablename END DEALLOCATE tables_cursor SET NOCOUNT OFF
Способ 3: Для решения поставленной задачи можно также использовать недокументированную хранимую процедуру sp_Msforeachtable. Sp_Msforeachtable сканирует все таблицы в определенной базе данных и выполняет указанную sql-команду (ы) для каждой из таблиц. Для подстановки имени таблицы используется символ "?".
T-SQL:
sp_msforeachtable @command1= 'print ''?''', @command2 = "select count(*) from ?"
www.realcoding.net
Количество строк во всех таблицах (T-SQL)
Иногда полезно для реверс инижинеринга
declare @tmp table (name varchar(50), rcount int) declare @sTblName varchar(50) declare @nRowCount int -- the rows declare @nObjectID int -- Object ID declare iter cursor for select TABLE_NAME from information_schema.tables open iter fetch next from iter into @sTblName while (@@FETCH_STATUS = 0) begin set @nObjectID = OBJECT_ID(@sTblName) if @nObjectID is not null begin select TOP 1 @nRowCount = rows from sysindexes where id = @nObjectID AND indid < 2 insert into @tmp values (@sTblName, @nRowCount) end fetch next from iter into @sTblName end close iter deallocate iter select * from @tmp order by rcount descUPD2:И индексы перебилдить все скопом (в тырнете нашёл)
Понравилось это:
Нравится Загрузка...
Похожее
alexeysuvorov.com
sql-server - SQL Server: максимальное количество строк в таблице
У меня есть таблица с тремя столбцами с чуть более 6 миллиардами строк в SQL Server 2008 R2.
Мы запрашиваем его каждый день, чтобы создавать графические диаграммы системного анализа для наших клиентов. Я не заметил ни одной производительности производительности базы данных (хотя тот факт, что она растет ~ 1 Гбайт каждый день, делает управление резервными копиями более активным, чем хотелось бы).
Обновление Июль 2016
Мы сделали это до ~ 24,5 миллиардов строк, пока резервные копии не стали достаточно большими, чтобы мы могли урезать записи старше двух лет (~ 700 ГБ, хранящиеся в нескольких резервных копиях, в том числе на дорогих лентах). Стоит отметить, что производительность не была существенным стимулом в этом решении (т.е. Все еще работала отлично).
Для тех, кто пытается удалить 20 миллиардов строк из SQL Server, я настоятельно рекомендую эту статью. Соответствующий код в случае, если ссылка замирает (прочитайте статью для полного объяснения):
ALTER DATABASE DeleteRecord SET RECOVERY SIMPLE; GO BEGIN TRY BEGIN TRANSACTION -- Bulk logged SELECT * INTO dbo.bigtable_intermediate FROM dbo.bigtable WHERE Id % 2 = 0; -- minimal logged because DDL-Operation TRUNCATE TABLE dbo.bigtable; -- Bulk logged because target table is exclusivly locked! SET IDENTITY_INSERT dbo.bigTable ON; INSERT INTO dbo.bigtable WITH (TABLOCK) (Id, c1, c2, c3) SELECT Id, c1, c2, c3 FROM dbo.bigtable_intermediate ORDER BY Id; SET IDENTITY_INSERT dbo.bigtable OFF; COMMIT END TRY BEGIN CATCH IF @@TRANCOUNT > 0 ROLLBACK END CATCH ALTER DATABASE DeleteRecord SET RECOVERY FULL; GOЕсли вы планируете хранить эти данные в одной таблице, не делайте этого. Я настоятельно рекомендую вам рассмотреть разбиение таблиц (либо вручную, либо со встроенными функциями, если вы используете Enterprise edition). Это уменьшает старые данные так же просто, как обрезание таблицы один раз (неделя/месяц/и т.д.). Если у вас нет Enterprise (чего у нас нет), вы можете просто написать script, который выполняется один раз в месяц, отбрасывает таблицы старше 2 лет, создает таблицу следующего месяца и восстанавливает динамическое представление, которое объединяет все таблицы разделов для упрощения запросов. Очевидно, что "раз в месяц" и "старше 2 лет" должен быть определен вами на основе того, что имеет смысл для вашего случая использования. Удаление непосредственно из таблицы с десятками миллиардов строк данных будет: a) взять ОГРОМНОЕ количество времени и б) заполнить журнал транзакций в сотни или тысячи раз.
qaru.site
Реактивный подсчет количества строк в таблице
Одной из самых что ни есть рядовых и часто встречающихся задач является подсчет количества строк в таблице. MS SQL Server предоставляет стандартное решение для такой задачи - старый добрый COUNT. Да, для таблиц с небольшим количеством записей использование COUNT как говорится - то, что доктор прописал. Однако если записей миллион или с десяток миллионов или еще больше? Посмотрим каковы будут результаты. Для наглядности будем использовать для теста таблицу (назовем ее Ads) с количеством записей, например, больше 10 миллионов. Итак, приступим - первый стандартный вариант с использованием COUNT:- select count(*) from Ads
- статистика:SQL Server Execution Times:CPU time = 1076 ms, elapsed time = 1174 ms.
- данные из плана выполнения:
То что мы видим не сильно впечатляет. Если выполнить предыдущий код с распараллеливанием - результаты конечно будут в разы лучше:
- статистика:SQL Server Execution Times:CPU time = 1997 ms, elapsed time = 149 ms.
- данные из плана выполнения:
но ведь можно еще быстрее! Для этого нам потребуется представление sys.dm_db_partition_stats. Собственно код:- select sum(ps.row_count)
- from sys.dm_db_partition_stats ps
- where ps.object_id = object_id(N'Ads')
- and ps.index_id<2
- статистика:SQL Server Execution Times:CPU time = 0 ms, elapsed time = 38 ms.
- данные из плана выполнения:
Результат превзошел все ожидания! Теперь мы можем быстро считать количество записей в любой таблице!Полезные ссылки:- подробнее о представлении sys.dm_db_partition_stats можно почитать тут
maximus-sql-notes.blogspot.com
Как узнать количество строк в таблице MySQL
26 октября 2011 / MySQL, PHPОднажды я столкнулся с этой задачей, но многие из предлагаемых в интернете решений у меня не работали. И всё же я нашёл выход. И даже не один.
Способ 1. phpMyAdmin
Начнем с самого простого и очевидного. Допустим, вам не нужно использовать полученный результат в коде, а просто узнать количество строк, только и всего.
Тогда заходим в phpMyAdmin (localhost/tools/phpmyadmin — для Денвера), затем выбираем нужную базу данных, после этого выбираем таблицу, количество строк в которой нужно выяснить, и видим следующее сообщение:
Способ 2. COUNT
Вот так выглядит сам SQL-запрос:
SELECT COUNT(1) FROM название_таблицы |
SQL-запрос с условием:
SELECT COUNT(1) FROM название_таблицы WHERE условие |
Реализация на PHP:
$a = mysql_query("SELECT COUNT(1) FROM название_таблицы"); $b = mysql_fetch_array( $a ); echo $b[0]; // выведет число строк |
Аналогичным образом сюда можно добавить условие. Тогда код выведет число строк в таблице, удовлетворяющих условию.
Способ 3. mysql_num_rows
Этот способ позволяет подсчитать количество строк результата запроса.
Например в WordPress посты хранятся в таблице wp_posts, таким образом мы можем узнать количество всех постов. Этот код дан только для примера (или для случаев, когда среда WordPress не подгружена), так как в WordPress подключение к базе данных осуществляется через класс $wpdb.
/* * для начала подключимся к базе данных * возможно вы уже подключились к ней ранее * пользователь root и пустой пароль - настройки по умолчанию для Денвера */ $connect_db = mysql_connect("localhost", "root", ""); /* * выбираем базу данных, нужно указать её название */ mysql_select_db("truemisha_database", $connect_db); /* * SQL запрос * у меня в качестве названия таблицы указана таблица с записями WordPress */ $posts = mysql_query("SELECT * FROM wp_posts", $connect_db); /* * задействуем функцию mysql_num_rows() */ $num_rows = mysql_num_rows( $posts ); echo "Количество записей на вашем блоге WordPress: $num_rows \n"; |
В результат будут включены абсолютно все записи. А как узнать количество только тех, которые опубликованы? Для этого нам потребуется немного изменить SQL-запрос.
17 | $posts = mysql_query("SELECT * FROM wp_posts WHERE post_status='publish'", $connect_db); |
Миша Рудрастых
Впервые познакомился с WordPress в 2009 году. С 2014 года меня можно встретить на WordCamp — официальной конфе по WordPress, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills.
Если вам нужна помощь с вашим сайтом или разработка с нуля, то могу порекомендовать хороших ребят. Просто напишите мне.
misha.blog
Способы подсчета количества записей в каждой из таблиц базы данных | MS SQL Server | Статьи | Программирование Realcoding.Net
В этой статье рассматриваются несколько способов, с помощью которых можно подсчитать количество записей в таблицах базы данных MS SQL Server.
Способ 1: Поскольку приведенный ниже sql-код для подсчета количества записей использует таблицу sysindexes, его результат зависит от того, была ли обновлена статистика.
T-SQL:
select substring(o.name, 1, 30) Table_Name ,i.rows Number_of_Rowsfrom sysobjects oinner join sysindexes ion (o.id = i.id)where o.xtype = 'u'and i.indid < 2order by o.name
В приведенном примере xtype = 'u' используется для выбора объектов типа "таблица", а использование indid < 2 гарантирует выборку всех таблиц (как имеющих, так и не имеющих индексы).
Способ 2: Следующий sql-код также может быть использован для определения количества записей в таблицах базы данных. Для подсчета числа строк этот sql-код использует функцию агрегации. Обрамление кавычками выбранного названия таблицы необходимо для обработки пробелов в названии (если такие названия существуют).
T-SQL:
SET NOCOUNT ON DECLARE tables_cursor CURSOR FOR SELECT name FROM sysobjects WHERE type = 'U' order by 1 OPEN tables_cursor DECLARE @tablename varchar(50)
FETCH NEXT FROM tables_cursor INTO @tablename
WHILE (@@fetch_status <> -1) BEGIN select @tablename = quotename(@tablename, '[]') DECLARE @CMD VARCHAR(100) PRINT @TABLENAME SELECT @CMD = ' select count(*) from '+@tablename+' ' EXEC (@CMD)
FETCH NEXT FROM tables_cursor INTO @tablename END DEALLOCATE tables_cursor SET NOCOUNT OFF
Способ 3: Для решения поставленной задачи можно также использовать недокументированную хранимую процедуру sp_Msforeachtable. Sp_Msforeachtable сканирует все таблицы в определенной базе данных и выполняет указанную sql-команду (ы) для каждой из таблиц. Для подстановки имени таблицы используется символ "?".
T-SQL:
sp_msforeachtable @command1= 'print ''?''', @command2 = "select count(*) from ?"
www.realcoding.net