Ich habe eine Tabelle, die horizontal unterteilt wie diese werden Diese TabelleWenn eine Tabelle horizontal partitioniert ist, kann sie durch den Primärschlüssel abgefragt werden?
CREATE TABLE mytable
(
id int IDENTITY(1,1) NOT NULL,
customer_id [int] NOT NULL,
blessdate date NOT NULL,
value1 varchar(max) NULL,
value2 varchar(max) NULL
CONSTRAINT [PK_History]
PRIMARY KEY CLUSTERED ([id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON)
) ON [PRIMARY]
sieht durch die customer_id
über mehrere Computer-Hashing. Kann ich diese partitionierte Tabelle so abfragen?
select *
from mytable
where id = 6709
Wie man sehen kann ich nicht die customer_id
in der Abfrage enthalten waren. Wenn ich die Tabelle so abfrage, wird es eine Leistungseinbuße geben? Wie wird SQL Server wissen, welche Partition abgefragt werden soll?
Meine Vermutung wäre ja ... Sie müssen jede Partition einzeln scannen, um die richtige customer_id zu finden. Das Optimierungsprogramm hat keine Hinweise darauf, welches PK sich auf welcher Partition befindet, da sich die Partition in einer anderen Spalte befindet. – Brad
Es würde alle Partitionen überprüfen, aber natürlich können Sie die Abfrage ausführen. Es müsste keinen Scan durchführen, da es die Daten schnell im Index finden kann. –
"Diese Tabelle wird horizontal partitioniert, indem die customer_id über mehrere Computer verteilt wird." Wie werden Sie das dann tun? Ohne eine Erklärung für genau das Schema, das Sie im Sinn haben, ist diese Frage nicht zu verantworten. –