Question

Y at-il quelque chose dont nous pouvons obtenir le plus vite pas. des lignes d'une table au lieu d'utiliser count (1). En outre, il y a deux cas:

a) lorsque l'on veut obtenir le pas. des lignes d'une table.

b) lorsque nous voulons juste savoir s'il y a au-moins une ligne.

Merci à l'avance.

Était-ce utile?

La solution

a) Vous pouvez obtenir les nombres de lignes de table à partir de tables système, 1 exemple selon Uri Dimant blog ici .

b) Je toujours utiliser EXISTE:

IF EXISTS(SELECT * FROM YourTable)

Autres conseils

b) lorsque nous voulons juste savoir si tot il y a atleast une ligne.

SELECT TOP 1 myField FROM myTable [WHERE .....]

Pour connaître le nombre de toutes les lignes de la table sans les numériser, vous pouvez utiliser

select SUM(row_count) AS row_count
from sys.dm_db_partition_stats
where object_id = object_id('dbo.tblName')
    and index_id < 2

Je ne sais pas s'il y a des mises en garde avec cette approche. (On peut supposer qu'il pourrait soit inclure le nombre de dossiers non engagés ou non inclure les modifications apportées au sein de votre transaction en cours)

b) Linq to SQL génère

EXISTS (SELECT NULL FROM Table....)

a) Non.

b) Vous pouvez utiliser la fonction exists, qui vérifie uniquement s'il y a un résultat et ne soit pas en fait le résultat.

Il y a cette approche, en utilisant sysobjects et sysindexes:

Compter les lignes pour toutes les tables à la fois

Il a bien fonctionné pour moi dans le passé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top