Indice le plus approprié pour les colonnes de courte durée

Dans mon projet actuel, certaines tables ont une colonne nommée "changed", qui indique si la ligne en cours a été modifiée depuis la dernière vérification. Toutes les instructions insert et update incluent cette colonne.

Toutes les heures, j'exécute une tâche planifiée qui interroge toutes les lignes modifiées, fait des choses avec ces lignes, puis définit une valeur nulle pour la colonne "changed".

Ceci est potentiellement un problème de performance, puisque je vais faire beaucoup d'opérations d'écriture et de lecture dans cette colonne, l'index sera constamment en cours de reconstruction.

Quelle est la meilleure option pour ce scénario (plutôt que de ne pas utiliser ce type de mécanisme)?

Si votre table est énorme, déposez la colonne et créez une table dédiée (avec des informations de key primaire uniquement) et insérez des sortingggers dans cette table. Vous devez ensuite traiter cette petite table et l'effacer à la fin des lignes. vous devez le faire pour chaque table que vous suivez.

Si vos tables sont petites, la colonne n'est peut-être pas une mauvaise idée, mais vous pouvez voir le blocage / locking si vous avez beaucoup de sélections et de mises à jour sur ces tables, et si vos loops de traitement planifiées sont très lentes.

Si vous utilisez une colonne, il serait peut-être préférable d'avoir une colonne LastChgDate, puis vous traitez toutes les lignes d'une plage (vous devrez suivre la plage à traiter à chaque fois), mais vous n'aurez pas besoin de changer LastChgDate pour montrer qu'il est "fait". Cela pourrait être discutable si votre process programmé met à jour la ligne réelle, mais vous ne dites pas.

Puisque la colonne n'a probablement que deux valeurs (null et 1 for changed), un index est probablement inutile de toute façon.