Dans le contexte d'une base de données, l'optimisation fait référence au processus de l'optimiseur de requêtes sélectionnant un plan d'exécution physique efficace.
Trois tables: product: avec colonnes: ( a, g, ...a_lot_more... ) a: PK, clustered g: bit-column main: avec colonnes: ( c, f, a, b, ...a_lot_more... ) c: PK, clustered f: bit-column (a, b): UQ lookup avec des colonnes: ( a, b, c, i ) (a, b): PK, clustered a: FK to …
Il y a quelque temps, Brent Ozar a publié un article détaillant certaines des différences entre SQL Server et PostgreSQL: Deux différences importantes entre SQL Server et PostgreSQL Le premier point («les CTE sont des clôtures d'optimisation») a attiré mon attention, car il est évident que dans l'exemple fourni, SQL …
Pour faire court, nous mettons à jour de petites tables de personnes avec des valeurs à partir d'une très grande table de personnes. Dans un test récent, cette mise à jour prend environ 5 minutes pour s'exécuter. Nous sommes tombés sur ce qui semble être l'optimisation la plus stupide possible, …
J'ai une table dans une base de données SQL Server avec un index cluster sur la clé primaire. Le tableau comporte 1 million de lignes. Si je supprime 10 000 lignes de la table, l'index est-il restructuré pendant l'opération de suppression? L'opération de suppression fait partie de la procédure stockée. …
Selon Craig Ringer : Bien que ce soit généralement une bonne idée de créer un index sur (ou incluant) vos colonnes de clé étrangère côté référencement, ce n'est pas obligatoire. Chaque index que vous ajoutez ralentit légèrement les opérations DML, vous payez donc un coût de performance pour chaque INSERT, …
J'utilise le CTE récursif suivant comme exemple minimal, mais en général, l'optimiseur doit utiliser les cardinalités «devinées» par défaut pour les CTE récursifs: with recursive w(n) as ( select 1 union all select n+1 from w where n<5 ) select * from w; /* n --- 1 2 3 4 …
Je gère une base de données d'archives qui stocke les données historiques dans des vues partitionnées. La colonne de partitionnement est un datetime. Chaque table sous la vue stocke un mois de données. Nous contraignons les événements sur chaque table avec une contrainte de vérification sur la colonne datetime. Cela …
Dans un projet sur lequel je travaille, chaque modification des lignes de certaines tables de la base de données doit être suivie pour un audit ou une restauration supplémentaire. Il doit être facile de trouver qui a modifié la ligne, à partir de quelle adresse IP et quand, et de …
Lors de l'ajout de NOT NULLcolonnes avec une DEFAULTvaleur - PostgreSQL optimise-t-il cette opération? Dans le cas où la table a n lignes, une colonne alter-table-add-optim non optimisée produirait n écrit de la valeur par défaut - ce qui pourrait être très douloureux, évidemment. Avec l'optimisation, la base de données …
Considérez cette requête qui consiste en Nauto-jointures: select t1.* from [Table] as t1 join [Table] as t2 on t1.Id = t2.Id -- ... join [Table] as tN on t1.Id = tN.Id Il produit un plan d'exécution avec N analyses d'index cluster et N-1 jointures de fusion. Honnêtement, je ne vois …
La conversion d'une colonne régulière en une colonne calculée persistante empêche cette requête de faire des recherches d'index. Pourquoi? Testé sur plusieurs versions de SQL Server, dont 2016 SP1 CU1. Repros Avec une colonne calculée Avec une colonne régulière Le problème est avec table1, col7. Les tables et la requête …
Je sais quand il s'agit d'utiliser un index ou une analyse de table, SQL Server utilise des statistiques pour voir laquelle est la meilleure. J'ai une table avec 20 millions de lignes. J'ai un index sur (SnapshotKey, Measure) et cette requête: select Measure, SnapshotKey, MeasureBand from t1 where Measure = …
J'ai besoin d'optimiser une SELECTinstruction, mais SQL Server effectue toujours une analyse d'index au lieu d'une recherche. C'est la requête qui, bien sûr, se trouve dans une procédure stockée: CREATE PROCEDURE dbo.something @Status INT = NULL, @IsUserGotAnActiveDirectoryUser BIT = NULL AS SELECT [IdNumber], [Code], [Status], [Sex], [FirstName], [LastName], [Profession], [BirthDate], …
Modifié: Pourquoi les sessions signalant sont-elles bloquées mais attendent avec des types d'attente PAGELATCH_*non LCK_M_liés? J'avais précédemment supposé que SQL Server ne signalait que les sessions de blocage dans la colonne blocking_session_Id. Si les sessions bloquées attendaient un verrou logique et rien d'autre comme a PAGELATCH_*.
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.