cs_yuri2008
Messages postés4Date d'inscriptionjeudi 29 mai 2008StatutMembreDernière intervention20 juin 2008
-
29 mai 2008 à 11:32
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
30 mai 2008 à 23:04
Bonjour,
J’ai une table de 200 000 lignes dans une base de données. Dans cette table, il y a des champs text, ntext (gros champs de texte), date,…
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
Je travaille sous SQL server 2000. Je dois faire beaucoup de requêtes multicritères dans cette table. Par exemple : par date, par mot clé (dans le champs ntext),…. Le problème est : le temps d’exécution est long.
Que peut-je faire pour optimiser le temps de réponse SQL server sans monopoliser 100% de CPU (éviter de bloquer d’autres accès éventuels simultanées), sachant que, suivant les requêtes qu’on fait, c’est possible d’avoir 2000 lignes de résultats ?
J’ai essayé le catalogue de texte intégral, qui fonctionne bien. J’ai placé des index les champs textes, dates, … (sur lesquels je recherche).
Y a-t-il d’autres méthodes pour optimiser le temps de traitement des requêtes ?
Que doit-je modifier dans la structure de la base pour accélérer les temps de réponses ?
Quelle types de serveur serait les mieux adaptés (processeur : mono, dual, … ; RAM ; Disque…) ?
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 30 mai 2008 à 23:04
Salut,
Tu peux essayer 2 choses :
1 :
Après avoir créé des index (simple ou multi-champ) efficaces :
forcer ces indexs selon les criteres de recherche en demandant de ne pas locker les données
exemple :
select* from MA_TABLE with (index=IX_INDEX_RECHERCHE, nolock)
inner join MA_TABLE2 (nolock) on etc...
where champ_critere = ect...
2 :
Utiliser des vues précalculées (CREATE VIEW) selon les critères prévus :
Sinon pour le texte intégral,
as-tu essayé : SELECT * FROM FREETEXTTABLE ?