Est-ce que d'une colonne calculée SQL Server nécessite une « persistance » afin qu'il soit indexé efficacement?

StackOverflow https://stackoverflow.com/questions/2175323

Question

Est-ce que d'une colonne calculée SQL Server nécessite une « persistance » afin qu'il soit indexé efficacement?

Il est un nom et une combinaison de colonne LoweredName (calculée). Donc, je ne crois pas qu'il traite de la substance de précision mentionné dans un article MSDN.

Était-ce utile?

La solution

Contrairement à ce que Mitch a déclaré, vous n'avez pas besoin d'une colonne à persista un index à créer (ce que les états de l'article MSDN est que, si la colonne calculée est non déterministe , alors il doit être marqué persisté avant qu'il puisse être pris en considération pour l'inclusion dans un indice.

Quant à la question initiale, je pense l'efficacité de l'indice soit aussi bon que pour toute autre colonne - quelle mesure utilisons-nous pour l'efficacité? Je certainement pas attendre à prendre plus de place. Il y aurait une surcharge de calcul durant les commandes INSERT / UPDATE, mais vous auriez que si oui ou non la colonne a été marquée comme persisté.

Il ne devrait pas y avoir de différence en ce qui concerne l'interrogation par l'indice -. La structure de l'indice lui-même serait construit même si cela était une colonne réelle, une colonne calculée persistante ou une colonne calculée unpersisted

(modifier un peu de chance finale) - il peut y avoir une petite baisse de performance si vous êtes récupérer la colonne calculée, et le calcul lui-même est cher, en comparaison avec par exemple les frais généraux du réseau, ou d'autres coûts d'E / S. Mais dans le cas de la conversion en minuscules, je ne pense pouvoir le remarquer.

Autres conseils

Non. Mais il y a certaines conditions qui doivent être remplies afin de créer un index sur une colonne calculée:

scroll top