J'ai une petite table avec 500 lignes. Cette table comporte 10 colonnes dont une colonne varchar (max).Slow "Sélectionnez" requête avec varchar (max)
Lorsque j'effectue cette requête:
SELECT TOP 36 *
FROM MyTable
WHERE (Column1 = Value1)
Il récupère environ 36 lignes en 3 minutes. Les colonnes varchar (max) contiennent dans chaque ligne 3000 caractères.
Si je tente de récupérer une seule ligne moins:
SELECT TOP 35 *
FROM MyTable
WHERE (Column1 = Value1)
Ensuite, la requête récupère 35 lignes de 0 secondes.
Dans mes statistiques clients, Octets reçus depuis le serveur, j'ai:
95 292 pour la requête de récupération de données en 0 sec
plus de 200 000 000 pour les données de récupération requête en 3 min
Savez-vous que ça vient?
EDIT --- Voici mon code réel:
select top 36 *
from Snapshots
where ExamId = 212
select top 35 *
from Snapshots
where ExamId = 212
EDIT --- Plus d'informations sur les statistiques des clients
Les deux statistiques ayant une grande variation sont:
Octets reçus de serveur: 66 038 Vs Plus de 2 000 000
Paquets TDS reçus du serveur 30 Vs 11000
Non, mais je vous recommande de changer le champ 'varchar' un' Text' terrain et voir si cela résout le isssue de performance. – Emmanuel
[ 'Text' a * long * été dépréciée] (http://msdn.microsoft.com/en-us/library/ms187993.aspx) - Pourquoi recommanderiez-vous? –
Peut-être que c'est un problème de mémoire ou un problème d'échange de disque? – Toc