Ein Kollege von mir zeigt mir, als einen Datensatz einer Tabelle zu zählen, die folgende Ansicht:uncoditioned Count (*) vs Systemtabellen
CREATE VIEW [SPR].[TablesCount]
AS
SELECT s.name cSchema,
t.name cTable,
sum(p.rows) eRowCount
FROM sys.tables t
INNER JOIN sys.schemas s
ON s.schema_id = t.schema_id
INNER JOIN SYS.partitions p
ON p.object_id = t.object_id
WHERE p.index_id < 2
GROUP BY s.name,
t.name
führt dramatisch schneller als ein reguläres
select count(*) from table
warum das? sollte die db-Engine nicht so optimiert werden, dass sie immer dem kürzesten Weg folgt? Was ist der Nachteil in der Systemtabellenansicht Lösung?
zwei gute Punkte, die zweite, die wir vermuteten, aber die erste wurde nur vermutet –