cette réponse est basée sur mon opinion personnelle J'utilise ma logique mathématique pour répondre
la deuxième question portait sur la frontière où s'arrêter, commençons par faire un calcul mathématique, supposons que nous ayons N lignes avec L champs dans une table si nous indexons tous les champs, nous obtiendrons un L nouvelles tables d'index où chaque table triera dans un manière significative les données du champ d'index, à première vue si votre table est un poids W cela deviendra W * 2 (1 tera deviendra 2 tera) si vous avez 100 grande table (j'ai déjà travaillé dans un projet où le numéro de table était autour de 1800 table) vous gaspillerez 100 fois cet espace (100 téra), c'est loin d'être sage.
Si nous appliquons des index dans toutes les tables, nous devrons penser aux mises à jour d'index si un déclencheur de mise à jour, tous les index sont mis à jour, il s'agit d'une sélection de tous les équivalents non ordonnés dans le temps
à partir de là je conclus que vous avez dans ce scénario que si vous perdez ce temps est préférable de le perdre dans une sélection ni une mise à jour car si vous sélectionnez un champ qui n'est pas indexé vous ne déclencherez pas une autre sélection sur tous les champs qui sont non indexé
quoi indexer?
clés étrangères: est un must basé sur
clé primaire: je ne sais pas encore si quelqu'un a lu ceci pourrait aider dans ce cas
autres champs: la première réponse naturelle est la moitié des champs restants pourquoi: si vous devez indexer plus vous n'êtes pas loin de la meilleure réponse si vous devez moins indexer vous n'êtes pas aussi loin car nous savons qu'aucun index n'est mauvais et que tout est indexé est également mauvais.
à partir de ces 3 points, je peux conclure que si nous avons L champs composés de K clés, la limite devrait être quelque part ((L-K)/2)+K
plus ou moins proche de L / 10
cette réponse est basée sur ma logique et mes prictices personnels