Sybase et les dates ...

Sybase et les dates ... - SQL/NoSQL - Programmation

Marsh Posté le 07-05-2002 à 15:40:50    

Code :
  1. Quel est le format de date idéal pour faire une sélection la plus rapide
  2. possible ?
  3. a. select count(*)
  4.      from comptetoto
  5.     where datval>='01/01/2001'
  6.       and datval<='12/31/2001'
  7. b. select count(*)
  8.      from comptetoto
  9.     where datval
  10.   between '01/01/2001' and '12/31/2001'
  11. c. select count(*)
  12.      from comptetoto
  13.     where convert(char(10),datval,112)>='20010101'
  14.       and convert(char(10),datval,112)<='20011231'
  15. d. select count(*)
  16.      from comptetoto
  17.     where datval >= le format datetime directement (mai comme c'est qu'on
  18. fait ?)
  19.       and datval <= ???
  20. Y'a quelques millions de lignes ...


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 07-05-2002 à 15:40:50   

Reply

Marsh Posté le 18-06-2002 à 09:23:25    

Salut !
- le cas a et le cas b sont équivalents, le between est une facilité syntactique
 
- le cas c : à proscrire totalement, car ton agument de recherche n'est pas un sarg ; les sargs sont de la forme

Code :
  1. colonne operateur expression


un argument de recheche pour l'optimiseur ne doit pas contenir de fonction
 
- le cas d : il est identique au cas a ; une constante date s'écrit entre apostrophes ou guillemets au format américain...
 
 
moralité : t'as qu'une seule requête possible ! à moins de le faire en 2 passes (1ère passe sur le < date+1, table temporaire, puis le > date-1, mais si tu regardes le showplan, tu devrais constater que c'es ce que fait l'optimiseur...
donc pour optimiser ton select, il te reste à indexer la date si ce n'est déjà fait, & si ça rame toujours, t'as plus qu'à restructurer la base pour stocker le compteur au fur à mesure :D :D


---------------
di. / www.diredaredare.org - Ailes de la ville
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed