V SQL Server, COUNT_BIG()
Funkce vrací počet položek nalezených ve skupině. Můžete jej použít ke zjištění, kolik řádků je v tabulce nebo sadě výsledků.
Tato funkce funguje podobně jako COUNT()
funkce. Rozdíl je v tom, že COUNT()
vrátí výsledek jako int , zatímco COUNT_BIG()
vrátí výsledek jako bigint .
Proto COUNT_BIG()
může se hodit, pokud očekáváte, že vaše sada výsledků bude mít velmi velký počet řádků (tj. větší než 2 147 483 647).
Syntaxe
Syntaxe vypadá takto:
-- Aggregation Function Syntax COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } ) -- Analytic Function Syntax COUNT_BIG ( [ ALL ] { expression | * } ) OVER ( [] )
ALL
aplikuje agregační funkci na všechny hodnoty. Toto je výchozí hodnota.
DISTINCT
určuje, že funkce vrací počet jedinečných hodnot bez hodnoty null.
expression
je výraz jakéhokoli typu. Agregační funkce a poddotazy nejsou ve výrazu podporovány.
*
určuje, že by měly být spočítány a vráceny všechny řádky, včetně duplicitních řádků a řádků, které obsahují hodnoty null. COUNT(*)
nemá žádné parametry a nepodporuje použití DISTINCT
. Také to nevyžaduje výraz parametr (protože nepoužívá informace o žádném konkrétním sloupci).
OVER ( [ <partition_by_clause> ]
rozděluje sadu výsledků vytvořenou FROM
klauzule do oddílů, na které je funkce aplikována. Pokud není zadáno, funkce považuje všechny řádky sady výsledků dotazu za jednu skupinu.
Příklad 1 – Základní použití
Zde je základní příklad ukazující, jak tato funkce funguje:
USE WideWorldImportersDW; SELECT COUNT_BIG(*) AS 'Row Count' FROM Fact.[Order];
Výsledek:
+-------------+ | Row Count | |-------------| | 231412 | +-------------+
V tomto případě je v Fact.[Objednávka] 231412 řádků tabulka.
V tomto případě jsem mohl použít COUNT()
vrátit stejný výsledek, protože počet řádků je dostatečně malý na int zvládnout.
Příklad 2 – Větší sada výsledků
Skutečná výhoda použití COUNT_BIG()
je, když je vaše sada výsledků mnohem větší než v předchozím příkladu.
Příklad:
SELECT COUNT_BIG(*) AS 'Row Count' FROM ReallyBigTable;
Výsledek:
+-----------------+ | Row Count | |-----------------| | 9147483648 | +-----------------+
V tomto případě je počet řádků tak velký, že int by to nezvládl. Naštěstí můžeme použít COUNT_BIG()
, protože výsledek vrátí jako bigint .
Další příklady
Další příklady najdete v tématu Jak COUNT()
Funguje na serveru SQL Server. Tento článek poskytuje více příkladů, než je zde uvedeno, přičemž všechny platí také pro COUNT_BIG()
.
Alternativa:APPROX_COUNT_DISTINCT()
Pokud pracujete s velmi velkými soubory dat, můžete zvážit použití APPROX_COUNT_DISTINCT()
místo COUNT_BIG(DISTINCT )
v některých případech.
APPROX_COUNT_DISTINCT()
vrátí přibližnou hodnotu, nikoli přesnou hodnotu. Je však navržen tak, aby byl mnohem pohotovější než COUNT_BIG()
, takže by to mohlo být užitečné v situacích, kdy je odezva důležitější než přesnost.
Je navržen tak, aby vracel jedinečné hodnoty bez nuly, takže by byl relevantní pouze v případech, kdy byste normálně používali DISTINCT
klauzule s COUNT_BIG()
.
Všimněte si také, že v době psaní APPROX_COUNT_DISTINCT()
je ve stavu veřejného náhledu.