Optimiser le temps réponse avec sql server

cs_yuri2008 Messages postés 4 Date d'inscription jeudi 29 mai 2008 Statut Membre Dernière intervention 20 juin 2008 - 29 mai 2008 à 11:32
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 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…) ?



 
Merci

1 réponse

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
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  ?
0
Rejoignez-nous