Bonjour,
J'ai une requête SQL que je construis dynamiquement dans une page ASP.NET qui me pose problème. Une fois la requête construite elle se présente sous la forme :
Si la taille de la chaine contenue dans le IN est modérée, la requête est très rapide mais dès que le IN contient trop d'éléments, la requête plante le server SQL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT id_1,id_2 FROM ma_table WHERE id_1 IN (...) AND id_2 IN (...) AND id_3 IN (...) AND id_4 IN (...)
Avec une petite recherche sur Google j'ai trouvé un cas similaire sur un Forum ou la solution proposée était de convertir le IN en table temporaire et d'effectuer une jointure plutôt qu'une clause IN.
Cela m'amène à 2 questions :
- est-ce que cette solution vous parait en effet la meilleure ?
- si oui, existe-t'il une moyen de créer une table à partir d'une chaine d'id comme "1,2,4,5,8,9..." sans avoir à faire l'insertion de chacun des id 1 à 1 ?
Merci d'avance !
Partager