Question

J'ai une vue indexée où j'ai essentiellement besoin de faire cela

SELECT ... 
    CASE 
         WHEN ISDATE(ColumnName) = 1 THEN CONVERT(datetime, ColumnName, 103) 
         ELSE NULL 
    END AS ViewColumn
....

essayer de créer les rendements d'index:

ne peut pas créer d'index sur la vue '....'.La fonction 'isdate' donne des résultats non déterministes.Utiliser un système déterministe fonction ou modifier la fonction définie par l'utilisateur pour retourner la déterministe Résultats.

msdn dit

isdate n'est déterministe que si vous l'utilisez avec la fonction convertie,
Si le paramètre de style convert est spécifié et que le style est pas égal à 0, 100, 9 ou 109.

ici http://msdn.microsoft.com/en-us/library/ms187347.aspx .

Mais je ne sais pas ce que cela signifie du tout.Pour autant que je puisse dire, je l'utilise avec une fonction convertie ....

Toute façon de travailler autour de cela?

Était-ce utile?

La solution

Il devrait être, si du tout:

SELECT ... 
    CASE 
         WHEN ISDATE(ColumnName) = 1 THEN CONVERT(datetime, ColumnName, 103) 
         ELSE NULL 
    END
....

Mais, vous n'utilisez pas IDDate avec convertir, car il n'y a pas d'expression comme

ISDATE(CONVERT(varchar,ColumnName,112)) 

Sans la convertie imbriquée La valeur de retour dépend des éléments tels que les paramètres de langue, c'est donc un comportement non déterministe.Sans la connaissance "externe", il n'est pas possible de prédire le résultat que l'on obtient, en fonction de la seule entrée.

Autres conseils

référence Quelles sont les exigences des vues indexées? Vous devez prendre en compte plusieurs exigences lorsque vous utilisez des vues indexées.

    1. View definition must always return the same results from the same underlying data.
    2. Views cannot use non-deterministic functions.
    3. The first index on a View must be a clustered, UNIQUE index.
    4. If you use Group By, you must include the new COUNT_BIG(*) in the select list.
    5. View definition cannot contain the following
        (A) TOP
        (B) Text, ntext or image columns
        (C)DISTINCT
        (d)MIN, MAX, COUNT, STDEV, VARIANCE, AVG
        (E)SUM on a nullable expression
        (F)A derived table
        (G)Rowset function
        (H)Another view
        (I)UNION
        (J)Subqueries, outer joins, self joins
        (K)Full-text predicates like CONTAIN or FREETEXT
        (L)COMPUTE or COMPUTE BY
        (M)Cannot include order by in view definition

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top