J'ai travaillé toute la journée sur l'optimisation d'une table SQL Server 2000 db avec ~ 9 millions de lignes. Ma seule expérience db a été avec des tables de quelques centaines de lignes, donc je n'ai jamais vraiment eu affaire à l'optimisation.Optimisation de table SQL Server 2000
Je fais des sélections et des mises à jour basées sur un nombre à 21 chiffres. En utilisant un type index char (21), les requêtes prennent plus de 2 secondes et le processus SQL Server prend 1.5gigs de RAM et 100% CPU. Avec un type bigint indexé, mes requêtes prennent quelques millisecondes et le processus prend ~ 100 Mo de RAM. Je veux juste comprendre ce qui se passe ici, est-ce normal, ou existe-t-il un moyen spécifique d'indexer un type de char pour de meilleures performances?
Heres certains de mes sql:
CREATE TABLE data
(
tableID int NOT NULL IDENTITY PRIMARY KEY,
tag char(21) NOT NULL UNIQUE,
dataColumn1 datetime NULL,
dataColumn2 char(8) NULL,
lastModified datetime NOT NULL
)
requête paramétrées de C#:
SELECT tag FROM data WHERE tag = @tag;
Merci pour toute aide.
Cela me semble bien, en supposant que ce soit une représentation précise et qu'il y ait un index sur 'tag' ... une autre suggestion, essayez un' DBCC FREEPROCCACHE' et 'DBCC DROPCLEANBUFFERS' avant de tester chaque requête, juste pour être Assurez-vous qu'il n'utilise pas les résultats mis en cache. Voir aussi si vous pouvez publier le plan d'exécution (SET SHOWPLAN ON). Si vous voyez une recherche d'index en cluster (ou une recherche d'index régulière) dans le plan et aucune analyse, recherche de signet ou recherche RID, il n'y a probablement pas grand chose à faire pour améliorer la vitesse. – Aaronaught