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.
J'ai un tableau avec 2 colonnes. Le type des deux colonnes est défini sur varchar(38). Si je crée une ligne avec une valeur vide pour l'une des colonnes, cela prendra-t-il le même espace de stockage que si la valeur n'était pas vide? En d'autres termes, MySQL réservera-t-il de l'espace de …
J'ai une simple sélection distincte sur certaines données de séries chronologiques: SELECT DISTINCT user_id FROM events WHERE project_id = 6 AND time > '2015-01-11 8:00:00' AND time < '2015-02-10 8:00:00'; Et cela prend 112 secondes. Voici le plan de requête: http://explain.depesz.com/s/NTyA Mon application doit effectuer de nombreuses opérations distinctes et …
Sac de sable En travaillant sur des articles de blog de qualité supérieure®, je suis tombé sur un comportement d'optimiseur que je trouvais vraiment exaspérant et intéressant. Je n'ai pas immédiatement d'explication, du moins pas avec qui je suis satisfait, alors je le mets ici au cas où quelqu'un intelligent …
L'exécution de la requête ci-dessous prend plus de 11 minutes. SELECT `c`.*, `e`.`name` AS `employee_name`, `e`.`emp_no`, `d`.`code` AS `department_code`, IF(ew.code IS NOT NULL, ew.code, egw.code) AS shift_code, IF(ew.code IS NOT NULL, ew.time_in_from, egw.time_in_from) AS time_in_from, IF(ew.code IS NOT NULL, ew.time_out_to, egw.time_out_to) AS time_out_to, IF(ew.code IS NOT NULL, ew.next_day, egw.next_day) AS …
J'ai une requête qui joint quelques tables et fonctionne assez mal - les estimations de ligne sont très éloignées (1000 fois) et la jointure de boucles imbriquées est choisie, ce qui entraîne plusieurs analyses de table. La forme de la requête est assez simple, ressemblant à ceci: SELECT t1.id FROM …
J'ai une table, appelée Address, qui a une colonne calculée persistante appelée Hashkey. La colonne est déterministe mais pas précise. Il contient un index unique qui n'est pas recherché. Si j'exécute cette requête, en renvoyant la clé primaire: SELECT @ADDRESSID= ISNULL(AddressId,0) FROM dbo.[Address] WHERE HashKey = @HashKey Je reçois ce …
J'ai une table avec un index unique filtré pour les valeurs non nullables. Dans le plan de requête, il existe l'utilisation de distinct. Y a-t-il une raison à cela? USE tempdb CREATE TABLE T1( Id INT NOT NULL IDENTITY PRIMARY KEY ,F1 INT , F2 INT ) go CREATE UNIQUE …
J'essaie de déterminer quels index utiliser pour une requête SQL avec une WHEREcondition et GROUP BYqui fonctionne actuellement très lentement. Ma requête: SELECT group_id FROM counter WHERE ts between timestamp '2014-03-02 00:00:00.0' and timestamp '2014-03-05 12:00:00.0' GROUP BY group_id Le tableau compte actuellement 32 000 000 lignes. Le temps d'exécution …
Mettre à jour ci-dessous J'ai un tableau de comptes avec une architecture de compte acct / parent typique pour représenter une hiérarchie de comptes (SQL Server 2012). J'ai créé une VUE en utilisant un CTE pour hacher la hiérarchie, et dans l'ensemble cela fonctionne à merveille et comme prévu. Je …
J'ai une requête SQL que j'ai passé les deux derniers jours à essayer d'optimiser à l'aide d'essais et d'erreurs et du plan d'exécution, mais en vain. Veuillez me pardonner de le faire, mais je publierai le plan d'exécution complet ici. J'ai fait l'effort de rendre les noms de table et …
Le nouveau OFFSET ... FETCHmodèle introduit avec SQL Server 2012 offre une pagination simple et plus rapide. Pourquoi y a-t-il des différences si l'on considère que les deux formes sont sémantiquement identiques et très communes? On pourrait supposer que l'optimiseur reconnaît les deux et les optimise (trivialement) au maximum. Voici …
J'ai deux requêtes similaires qui génèrent le même plan de requête, sauf qu'un plan de requête exécute un balayage d'index en cluster 1316 fois, tandis que l'autre l'exécute 1 fois. La seule différence entre les deux requêtes réside dans des critères de date différents. La requête de longue durée réduit …
Voici mon exemple de requête: SELECT nickname, CASE class_id WHEN 1 THEN 'Druid' WHEN 2 THEN 'Necromancer' WHEN 3 THEN 'Mage' WHEN 4 THEN 'Priest' WHEN 5 THEN 'Warrior' WHEN 6 THEN 'Stalker' WHEN 7 THEN 'Paladin' WHEN 8 THEN 'Psionic' END class_name, ROUND(AVG(level),2) level, ROUND(AVG(tabard_id),2) tabard, CASE rank_id WHEN …
Tout en travaillant sur l'optimisation de certaines procédures stockées, je me suis assis avec le DBA et j'ai parcouru certaines procédures stockées avec une activité de blocage et / ou de lecture / écriture élevée. Le DBA a mentionné une chose: je devrais déclarer toutes les variables (en particulier TABLEcelles) …
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.