c'est cette requete :
Code:
1
2
3
4
5
6 INSERT tabledestination SELECT champ1,champ2, ......,champ30 FROM table1 t1, table2 t2 INNER JOIN t1.PK=t2.PK AND t1.date > '20051231' -- c'est un string AND t2.PK NOT IN ( SELECT PK FROM tabledestination)
Version imprimable
Essayez :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 CREATE INDEX X_RCD_DTMDNS ON t_Route_Call_Detail ([DateTime], DialedNumberString); CREATE PROCEDURE P_SELECT_CALL AS DECLARE @DH DATETIME; SET @DH = DATEADD(ss, - 1,CONVERT(datetime,CONVERT(varchar(10), GETDATE(), 103))); SELECT DISTINCT 'Post-paid' AS Type_Produit, convert(char(10), DateTime, 103) AS date_appel, convert( char(5), DateTime, 108) AS heure_appel, convert(char(10),Variable7) Num_dossier, convert(char(5),Variable3) AS parc FROM t_Route_Call_Detail WHERE "DateTime" BETWEEN '20060717' AND @DH AND DialedNumberString IN ('890710129','890710133','890710134','890710137') AND Variable3 NOT IN ('10','15') AND Variable3 IS NOT NULL AND Variable7 IS NOT NULL GO EXEC P_SELECT_CALL
Evitez les noms de colonens qui sont des mots réservés de SQL comme DateTime ou alors entourez les de guillemets...
A +
Bonsoir SQLPro,
Si j'ai bien compris ta requete tu me propose de creer un index sur le champs date ? et de remplacer l'opérateur > par BETWEEN ?
J'ai déja un index de crée sur le champs date.
Je n'ai pas de noms de colonne qui sont des mots réservés de SQL.Code:AND t1.date > '20051231'
Non : [DateTime] et DialedNumberString
DateTime est un mot réservé de SQL Server !!!
A +
Ok SQLPro,
Mais dans ma requete j'utilise le champs date et non DATETIME.
Ma requete differe de la tienne :
Code:
1
2
3
4
5
6
7 INSERT tabledestination SELECT champ1,champ2, ......,champ30 FROM table1 t1, table2 t2 INNER JOIN t1.PK=t2.PK -- 1 index cluster sur chaque PK de table AND t1.date > '20051231' -- un index ici AND t2.PK NOT IN ( SELECT PK FROM tabledestination)
auditez tempdb avec le profiler et vous le saurez !
A +