Я хочу узнать количество Customer_ID:
Проблема 1: Ниже приведен код для подсчета количества Customer_ID
. В моей базе данных 36 миллионов записей. Когда я ввожу приведенный ниже запрос, чтобы найти счетчик Customer_ID
, запускается слишком много времени, и, наконец, я получаю сообщение об ошибке ниже.
[Microsoft] SQL Server Native Client 11.0, Ошибка арифметического переполнения SQL Server при преобразовании выражения в тип данных int. (8115)
Мой запрос, чтобы найти количество Customer_ID:
SELECT Customer_ID,Count(*)
FROM [Customers]
GROUP BY Customer_ID;
Входная база данных:
S.no Customer_ID Country
1. 456 INDIA
2. 789 USA
3. 1001 UK
4. 456 AUSTRALIA
5. 456 SINGAPORE
6. 789 MALASIYA
7. 1001 TAIWAN
8. 1001 JAPAN
9. 1001 AFRICA
10. 1001 OMAN
11. 123 DUBAI
Ожидаемый результат:
Customer_ID Count of Customer_ID
123 1
456 3
789 2
1001 5
Пожалуйста, помогите мне добиться этого результата. Заранее благодарны за Вашу помощь.
2 ответа
36 миллионов строк не должны вызывать ошибку переполнения. Ты можешь попробовать:
SELECT Customer_ID, Count_Big(*)
FROM [Customers]
GROUP BY Customer_ID;
Но в этом нет необходимости, потому что ваша таблица не должна приводить к переполнению (кроме случаев, когда «миллион» действительно означает «миллиард» в английском языке США).
Для повышения производительности вам может потребоваться индекс по Customers(Customer_ID)
. Похоже, что у вас это есть, если Customer_Id
является первичным ключом таблицы. Конечно, если это первичный ключ, то счет всегда будет «1», поэтому в запросе нет необходимости.
У меня есть два следующих запроса, и я ожидаю, что первый запрос будет намного быстрее, но это не так. Почему?
Запрос1
SELECT Customer_ID, SUM(st.row_count) AS [Count of Customer_ID]
FROM sys.dm_db_partition_stats st
WHERE object_name(object_id) = 'Customers'
GROUP BY Customer_ID
Запрос2
SELECT Customer_ID, COUNT(*) AS [Count of Customer_ID]
FROM [Customers] WITH (NOLOCK)
GROUP BY Customer_ID
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.