powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему select count(*) from tablename запрос занимает много время?
53 сообщений из 53, показаны все 3 страниц
Почему select count(*) from tablename запрос занимает много время?
    #39790754
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем! У меня есть таблица там больше 100 млн записи. Все нужные поля индексирован. Ребята помогите пожалуйста
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790756
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача какая?
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790807
архивариус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
   Total_Rows= SUM(st.row_count)
FROM
   sys.dm_db_partition_stats st
WHERE
    object_name(object_id) = 'T' AND (index_id < 2);


select COUNT(*) from T;
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790817
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть таблица я его использовался как лог. Каждый секунде есть 1000 записи. Если я хочу получить информация именно выбранный период, он занимает больше 30 минут , тот время мой сервисе не записывают история в лог
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790820
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KahramonУ меня есть таблица я его использовался как лог. Каждый секунде есть 1000 записи. Если я хочу получить информация именно выбранный период, он занимает больше 30 минут , тот время мой сервисе не записывают история в лог
если просто, то ваш вариант скорее всего NOLOCK
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790826
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,
как мне устранить эту проблему. У меня есть два сервиса который записывает лог. 1. Через проседедура. 2. Через web api. Пожалуйста помогите. Извините мой русскый язык
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790835
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramon,
Код: sql
1.
SELECT COUNT(*)AS CNTT FROM TABLEA(WITH NOLOCK)
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790836
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramon,

Если нет возможности править запросы, то или чере querystore или перевести базу в RCSI
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790875
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

Так попробовал. Никаких результаты нет. Опять занимал больше 30 минут. Если у вас время есть напишите мне на телеграмм (@qahramon0786). Я вам доступ открою
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790882
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Msg 601, Level 12, State 3, Line 5
Could not continue scan with NOLOCK due to data movement.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790884
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KahramonУ меня есть таблица там больше 100 млн записи. Все нужные поля индексирован(...) Каждый секунде есть 1000 записи.
1000 * 60 * 60 * 24 = 86 миллионов записей в сутки. 2,5 млрд записей в месяц. 31 млрд. записей в год. Я испытываю уважение к людям, умеющим управлять такими объемами данных (как вообще, так и на MS SQL в частности). Но чувствую, что-то здесь не так...
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790885
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramon,

1. show your execution plan
2. "Could not continue scan with NOLOCK due to data movement." seem to be hdd dies
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790893
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WarAnt,
How can i check hdd ? i have been sql server 2005 database and i changed it to sql server 2014. when i attach database there is no errors and warning.

Евгений

У меня груба 5000 терминал. они отправляет свой статус каждый секунд. Я сам не знаю как это проблема решить. Пожалуйста поделился своим опытом
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790905
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KahramonУ меня груба 5000 терминал. они отправляет свой статус каждый секунд. Я сам не знаю как это проблема решить. Пожалуйста поделился своим опытом
Например, можно логировать не статус, а изменение статуса.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790907
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фактически это не обязательно проблема базы...
Можете пробовать сменить на поиск из метаданных 21842488
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790910
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.Евгений, Может я не так объяснил ситуация. дайте мне ваши контакт я вам доступ открою через teamviewer
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790925
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramon.Евгений, Может я не так объяснил ситуация. дайте мне ваши контакт я вам доступ открою через teamviewer
Kahramon, вам уже предложили считать количество строк на основе метаданных. Любой другой вариант либо займет существенное время, либо замедлит вставку новых строк, либо потребует изменить архитектуру.

Сам запрос мне не интересен, а вот архитектура логирования вызвала у меня некоторое недоумение.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790943
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KahramonЕсли я хочу получить информация именно выбранный период, он занимает больше 30 минут

[quot .Евгений]KahramonЛюбой другой вариант либо займет существенное время, либо замедлит вставку новых строк, либо потребует изменить архитектуру.


Ну чо так уж печально?
Фсе очень сильно зависит от организации записи в лог (кластерный индекс), размеров "периода" и его соотношения с кластерным индексом...
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790951
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramon,

для хранения журналов веб-сервисов больших объёмов обычно используют нереляционные СУБД.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790970
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,
Ребята , я не такой профессионал как вы. Может у меня есть много ошибок когда строил архитектурную базу. Пожалуйста помогите мне найти причину. У меня сейчас есть копия база данный , если вам интересно определить ошибки я вам открою доступ.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39790986
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222Ну чо так уж печально?
Фсе очень сильно зависит от организации записи в лог (кластерный индекс), размеров "периода" и его соотношения с кластерным индексом...
Как волка не корми, все равно яйца больше медвежьих не вырастут. Можно еще унести данные на SSD или In-memory, но суть проблемы остается в другом: в логе лежат никому не нужные десятки и сотни миллионов записей, данные востребованы в другом разрезе. И вместо изменения принципа хранения данных разработчик будет героически преодолевать трудности, созданные им же.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791022
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно создавать каждый месясь отдельный таблица(log_month_year) и сохранить как ndf(log_month_year.ndf) файл?
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791087
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramonaleks222,
Ребята , я не такой профессионал как вы. Может у меня есть много ошибок когда строил архитектурную базу. Пожалуйста помогите мне найти причину. У меня сейчас есть копия база данный , если вам интересно определить ошибки я вам открою доступ.

Зачем твоя база?

Определение таблицы и пример запроса - будет полезнее.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791098
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramon,
Должно помочь - естетсвенно будет верно если статистика апдейчена
для личных целей - посмотреть Count таблиц - САМОЕ ТО


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT  s.name AS [schema], t.name TableName,   p.rows 
from sys.objects t     -- with (nolock)
JOIN sys.schemas s 
     ON t.schema_id=s.schema_id
	 JOIN sys.partitions  p 
	        ON p.object_id = t.object_id 
			JOIN sys.indexes i 
			ON i.index_id=p.index_id AND t.object_id=i.object_id
			WHERE 
			t.type = 'U' and i.type_desc in ('CLUSTERED','HEAP')  
			order by  3 desc
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791103
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор,

1. Для получения имени схемы есть удобная функция object_schema_name().
2. В таблице может быть более одной партиции.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791123
Glebanski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KahramonЕсли я хочу получить информация именно выбранный период , он занимает больше 30 минут ,
ТС пишет вроде, что у него count еще с условием по периоду, не?
то есть типа
Код: sql
1.
LogEntryDateTime > .... and  LogEntryDateTime < .... 


Может тут проблема, и ему достаточно хинтом как-то поправить дело?
Kahramon, Чего именно хотите то?
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791125
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlebanskiKahramonЕсли я хочу получить информация именно выбранный период , он занимает больше 30 минут ,
ТС пишет вроде, что у него count еще с условием по периоду, не?
то есть типа
Код: sql
1.
LogEntryDateTime > .... and  LogEntryDateTime < .... 


Может тут проблема, и ему достаточно хинтом как-то поправить дело?
Kahramon, Чего именно хотите то?

товарищ хочет быстро неблокируеще считать кол-во записей по таблице за определенный период (порция данных)


Kahramon, покажите структуру таблицы, индексы и ваш медленный запрос
так же следующее:

Код: sql
1.
2.
3.
4.
select @@version
go
select * from sys.configurations
go
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791323
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо большое что уделили время!
select t1.* from meter_log t1 inner join(select min(date_format) as min_time from meter_log m2 where factory_number=:number and type_id=:typeId and modem_id=:modemId and (date_format between :from and :to) group by convert(varchar,date_format,112))t2 on t1.date_format=t2.min_time where t1.factory_number=:number and t1.type_id=:typeId and t1.modem_id=:modemId
typeId and modem_id are foreign keys. Factory_number and date_format are indexed keys.

Мне нужна взять первые данные за каждый день(втечение выбранного периода ). Тут запрос занемает много времени. В таблице есть где то 1 млрд записи
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791327
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komradGlebanskiпропущено...

ТС пишет вроде, что у него count еще с условием по периоду, не?
то есть типа
Код: sql
1.
LogEntryDateTime > .... and  LogEntryDateTime < .... 


Может тут проблема, и ему достаточно хинтом как-то поправить дело?
Kahramon, Чего именно хотите то?

товарищ хочет быстро неблокируеще считать кол-во записей по таблице за определенный период (порция данных)


Kahramon, покажите структуру таблицы, индексы и ваш медленный запрос
так же следующее:

Код: sql
1.
2.
3.
4.
select @@version
go
select * from sys.configurations
go


Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 6.0 (Build 6001: Service Pack 1)
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791334
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KahramonА можно создавать каждый месясь отдельный таблица(log_month_year) и сохранить как ndf(log_month_year.ndf) файл?Можно и так.

Решения ищутся под конкретную задачу, архитектура (и модель данных) проектируется исходя из типичных задач и из бизнес-логики данных.

А вы описали сначала одну задачу (select count(*) from tablename), вам дали решение.
Потом совсем другую задачу (за период)
А сейчас говорите про месяца, а это уже треться задача (когда периоды известны и фиксированны)

Вот для этих трёх задач есть три разных решения, со своими моделями данных, а могут быть и другие задачи, про которые вы пока не сказали.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791375
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KahramonMicrosoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 6.0 (Build 6001: Service Pack 1)

ого!
чистый 2005 RTM!
не думал, что такие еще встречаются в природе
и не конфигурированный к тому же

покажите
Код: sql
1.
select * from sys.dm_os_sys_info



на таблице есть индексы? заскриптуйте их и саму таблицу (show scripts of the table and its indexes)

покажите план запроса (execution plan)

по поводу запроса: мне кажется что он не совсем корректен, к тому же группировка лишняя
попробуйте альтернативный


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
-- your query
SELECT
	t1.*
FROM meter_log t1
INNER JOIN (SELECT
				MIN(date_format) AS min_time
				FROM meter_log m2
			WHERE factory_number = :number
				AND type_id = :typeId
				AND modem_id = :modemId
				AND (date_format BETWEEN :from AND :to)
			GROUP BY CONVERT(varchar, date_format, 112)
			) t2
	ON t1.date_format = t2.min_time
WHERE t1.factory_number = :number
AND t1.type_id = :typeId
AND t1.modem_id = :modemId

-- alternative 1 
SELECT
	t1.*
FROM meter_log t1
WHERE t1.factory_number = :number
AND t1.type_id = :typeId
AND t1.modem_id = :modemId
and  t1.date_format = (SELECT
                                        MIN(date_format) AS min_time
                                   FROM meter_log m2
                                   WHERE factory_number = :number
                                        AND type_id = :typeId
                                        AND modem_id = :modemId
                                        AND (date_format BETWEEN :from AND :to)
						) 
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791413
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KahramonВсем спасибо большое что уделили время!
select t1.* from meter_log t1 inner join(select min(date_format) as min_time from meter_log m2 where factory_number=:number and type_id=:typeId and modem_id=:modemId and (date_format between declarep by convert(varchar,date_format,112))t2 on t1.date_format=t2.min_time where t1.factory_number=:number and t1.type_id=:typeId and t1.modem_id=:modemId
typeId and modem_id are foreign keys. Factory_number and date_format are indexed keys.

Мне нужна взять первые данные за каждый день(втечение выбранного периода ). Тут запрос занемает много времени. В таблице есть где то 1 млрд записи


Первое, что вам нужно сделать - поучиться писать запросы.

1. Таблица всех дат периода. Можете генерировать прямо перед запросом.
2. Cross apply ( select top(1) * from ... )
3. Индексы получат шанс.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @from datetime = '20190101'
      , @to datetime = '20190201'
;

declare @dates table(dt datetime primary key);

while @from <= @to begin

  insert @dates select @from;

  set @from = @from + 1;

end;

select d.dt, t.*
   from @dates as d
        cross apply( select top(1) * from meter_log as t1 where t1.factory_number=:number and t1.type_id=:typeId and t1.modem_id=:modemId and t1.date_format >= d.dt order by t1.date_format asc ) as t
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791417
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradпо поводу запроса: мне кажется что он не совсем корректен, к тому же группировка лишняя
попробуйте альтернативный

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
-- your query
SELECT
	t1.*
FROM meter_log t1
INNER JOIN (SELECT
				MIN(date_format) AS min_time
				FROM meter_log m2
			WHERE factory_number = :number
				AND type_id = :typeId
				AND modem_id = :modemId
				AND (date_format BETWEEN :from AND :to)
			GROUP BY CONVERT(varchar, date_format, 112)
			) t2
	ON t1.date_format = t2.min_time
WHERE t1.factory_number = :number
AND t1.type_id = :typeId
AND t1.modem_id = :modemId

-- alternative 1 
SELECT
	t1.*
FROM meter_log t1
WHERE t1.factory_number = :number
AND t1.type_id = :typeId
AND t1.modem_id = :modemId
and  t1.date_format = (SELECT
                                        MIN(date_format) AS min_time
                                   FROM meter_log m2
                                   WHERE factory_number = :number
                                        AND type_id = :typeId
                                        AND modem_id = :modemId
                                        AND (date_format BETWEEN :from AND :to)
						) 



Ты меня пугаешь.
1. Группировка - зло.
2. Группировка большой таблицы - большое зло.
3. Группировка там, где группировка не нужна, - глупость.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791425
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222Ты меня пугаешь.
1. Группировка - зло.
2. Группировка большой таблицы - большое зло.
3. Группировка там, где группировка не нужна, - глупость.
у меня группировки нет, она у автора (your query)
я предложил alternative 1
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791531
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичГулин Федор,

1. Для получения имени схемы есть удобная функция object_schema_name().
2. В таблице может быть более одной партиции.

1+
2 да не учитывается сей момент - проверил на патриционных - 0-ли показывает

schema TableName rows
temp part1 0
temp part1 0
temp part1 0


но скрпит сей полезен в 90% случаев и висит у меня на макросах ибо юзаю я его часто

зы ну вот написали бы рабочий вариант учитывающий 2) и была бы практич. польза людям
я вот навскидку не могу сообразить как по метаданным вытащить сию инфу сразу
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791545
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федорнаписали бы рабочий вариант учитывающий 2) и была бы практич. польза людямТак в первом ответе написали правильный запрос. 21842488
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791579
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222Первое, что вам нужно сделать - поучиться писать запросы.

1. Таблица всех дат периода. Можете генерировать прямо перед запросом.
2. Cross apply ( select top(1) * from ... )
3. Индексы получат шанс.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @from datetime = '20190101'
      , @to datetime = '20190201'
;

declare @dates table(dt datetime primary key);

while @from <= @to begin

  insert @dates select @from;

  set @from = @from + 1;

end;

select d.dt, t.*
   from @dates as d
        cross apply( select top(1) * from meter_log as t1 where t1.factory_number=:number and t1.type_id=:typeId and t1.modem_id=:modemId and t1.date_format >= d.dt order by t1.date_format asc ) as t



Спасибо Вам. Ваши скрипт уменьшил время но он занимал где то 15 минут. Когда тот запрос запушен другие сервисе не могут записават данный
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791592
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komradKahramonMicrosoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 6.0 (Build 6001: Service Pack 1)

ого!
чистый 2005 RTM!
не думал, что такие еще встречаются в природе
и не конфигурированный к тому же

покажите
Код: sql
1.
select * from sys.dm_os_sys_info



на таблице есть индексы? заскриптуйте их и саму таблицу (show scripts of the table and its indexes)

покажите план запроса (execution plan)

по поводу запроса: мне кажется что он не совсем корректен, к тому же группировка лишняя
попробуйте альтернативный


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
-- your query
SELECT
	t1.*
FROM meter_log t1
INNER JOIN (SELECT
				MIN(date_format) AS min_time
				FROM meter_log m2
			WHERE factory_number = :number
				AND type_id = :typeId
				AND modem_id = :modemId
				AND (date_format BETWEEN :from AND :to)
			GROUP BY CONVERT(varchar, date_format, 112)
			) t2
	ON t1.date_format = t2.min_time
WHERE t1.factory_number = :number
AND t1.type_id = :typeId
AND t1.modem_id = :modemId

-- alternative 1 
SELECT
	t1.*
FROM meter_log t1
WHERE t1.factory_number = :number
AND t1.type_id = :typeId
AND t1.modem_id = :modemId
and  t1.date_format = (SELECT
                                        MIN(date_format) AS min_time
                                   FROM meter_log m2
                                   WHERE factory_number = :number
                                        AND type_id = :typeId
                                        AND modem_id = :modemId
                                        AND (date_format BETWEEN :from AND :to)
						) 
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791687
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KahramonСпасибо Вам. Ваши скрипт уменьшил время но он занимал где то 15 минут. Когда тот запрос запушен другие сервисе не могут записават данный

Дарагой, тебе уже говорили: "определение таблицы и индексов давай".
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791700
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramon,


Код: sql
1.
select * from sys.dm_os_sys_info




результат покажите либо картинкой, либо текстом с названием столбцов

гадать какие были колонки в выводе команды на сиквеле 5 поколений назад нет возможности
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791715
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgГулин Федорнаписали бы рабочий вариант учитывающий 2) и была бы практич. польза людямТак в первом ответе написали правильный запрос. 21842488

ткните пальцем ГДЕ
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
   Total_Rows= SUM(st.row_count)
FROM
   sys.dm_db_partition_stats st
WHERE
    object_name(object_id) = 'T' AND (index_id < 2);

select COUNT(*) from T;


вот это у меня НЕ пашет - dвы
или про что

Код: sql
1.
SELECT COUNT(*) FROM  <t1> (Nolock) ??? 


ну да но это тормоз на реально большоей таблице

приведенный выше мной скл отрабатывает моментально в независимости от кол-ва записей (ясно что зависит от прав. статистики)
если в таблицах милионы записей ЭТО оч. даже полезно ибо быстро помогает видеть картиену целиком
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39791743
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федорткните пальцем ГДЕ
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
   Total_Rows= SUM(st.row_count)
FROM
   sys.dm_db_partition_stats st
WHERE
    object_name(object_id) = 'T' AND (index_id < 2);

select COUNT(*) from T;



вот это у меня НЕ пашет - dвыДа, про это.

А что "не пашет"?
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39792757
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komradKahramon,


Код: sql
1.
select * from sys.dm_os_sys_info




результат покажите либо картинкой, либо текстом с названием столбцов

гадать какие были колонки в выводе команды на сиквеле 5 поколений назад нет возможности
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39792759
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komradKahramon,


Код: sql
1.
select * from sys.dm_os_sys_info




результат покажите либо картинкой, либо текстом с названием столбцов

гадать какие были колонки в выводе команды на сиквеле 5 поколений назад нет возможности
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39792830
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramon,

спасибо

и вот это тоже:

Код: sql
1.
2.
3.
select object_name,counter_name,cntr_value/1024 [MB] 
from sys.dm_os_performance_counters
where counter_name like 'T%Server%Memory%'
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39793111
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komradKahramon,

спасибо

и вот это тоже:

Код: sql
1.
2.
3.
select object_name,counter_name,cntr_value/1024 [MB] 
from sys.dm_os_performance_counters
where counter_name like 'T%Server%Memory%'
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39793124
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramon,

ну что, винда2008 с 8ГБ и 16цпу, сиквел 2005 стандарт RTM съедает половину памяти (3.5ГБ), конфигурирован по умолчанию

неясен размер базы, таблицы meter_log, структура таблицы и индексы по ней

покажите результат отдельными картинками

Код: sql
1.
2.
3.
exec sp_help meter_log
exec sp_helpindex meter_log
exec sp_spaceused meter_log
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39793159
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komradKahramon,

ну что, винда2008 с 8ГБ и 16цпу, сиквел 2005 стандарт RTM съедает половину памяти (3.5ГБ), конфигурирован по умолчанию

неясен размер базы, таблицы meter_log, структура таблицы и индексы по ней

покажите результат отдельными картинками

Код: sql
1.
2.
3.
exec sp_help meter_log
exec sp_helpindex meter_log
exec sp_spaceused meter_log
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39793165
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komradKahramon,
Код: sql
1.
exec sp_spaceused meter_log
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39793380
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradKahramon,

ну что, винда2008 с 8ГБ и 16цпу, сиквел 2005 стандарт RTM съедает половину памяти (3.5ГБ), конфигурирован по умолчанию

неясен размер базы, таблицы meter_log, структура таблицы и индексы по ней

покажите результат отдельными картинками

Код: sql
1.
2.
3.
exec sp_help meter_log
exec sp_helpindex meter_log
exec sp_spaceused meter_log



Лечим геморрой горчичниками?

ЗЫ. Никакое оборудование не исправит кривого запроса/таблицы.
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39793438
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramonexec sp_help meter_log
104Гб на 233 млн строк (т.е. почти 500 байт на строку). Скажите, пожалуйста: сколько дней реальной работы содержит лог?
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39793450
Kahramon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.ЕвгенийKahramonexec sp_help meter_log
104Гб на 233 млн строк (т.е. почти 500 байт на строку). Скажите, пожалуйста: сколько дней реальной работы содержит лог?
3 год
...
Рейтинг: 0 / 0
Почему select count(*) from tablename запрос занимает много время?
    #39793466
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kahramon.Евгений104Гб на 233 млн строк (т.е. почти 500 байт на строку). Скажите, пожалуйста: сколько дней реальной работы содержит лог?
3 год
В среднем получается примерно 200 тыс. записей в день. Ранее вы говорили, что в таблицу попадает тысяча записей в секунду. Соответственно, либо у вас должна быть очень неравномерная нагрузка (в среднем 200 секунд в день), либо вы чистите лог по какому-то принципу.
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему select count(*) from tablename запрос занимает много время?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]