2009-12-01 6 views
2

Je veux juste vérifier ma logique là-bas.Optimisation DATEDIFF

Supposons que je veux trouver tous les nouveaux produits dans les 30 derniers jours. Ma procédure actuelle est la suivante:

SELECT ProductName 
FROM ProductTable 
WHERE DATEDIFF(d, CreateDate, GETDATE()) < 30 

Cependant, je comprends que des fonctions comme DATEDIFF ne pas utiliser l'index non-cluster J'ai créé sur CreateDate. Ainsi donc, sera ma course de requête plus rapide en utilisant la procédure suivante:

SELECT ProductName 
FROM ProductTable 
WHERE CreateDate >= DATEADD(d, -30, GETDATE()) AND CreateDate < GETDATE() 

BTW, je n'ai pas SQL Server d'où je suis donc je ne peux pas tester cela en utilisant le plan d'exécution.

Répondre

1

Oui, vous avez raison, la deuxième requête sera plus rapide car elle peut utiliser tous les index disponibles sur CreateDate.