Maison base de données tutoriel mysql Méthode d'optimisation de la méthode de connexion aux tables Oracle (avec exemples)

Méthode d'optimisation de la méthode de connexion aux tables Oracle (avec exemples)

Apr 13, 2019 am 10:24 AM
oracle

Ce que cet article vous apporte concerne la méthode d'optimisation de la connexion aux tables Oracle (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Dans la base de données Oracle, il existe quatre méthodes de connexion de table entre deux tables : jointure par fusion de tri, jointure par boucle imbriquée, jointure par hachage et jointure cartésienne

1. 🎜>

La jointure par fusion de tri est une méthode de connexion de table qui utilise l'opération de tri (SORT) et l'opération de fusion (MERGE) pour obtenir l'ensemble de résultats de connexion lorsque deux tables sont connectées

Si la table t1 et la. La table t2 utilise une connexion de tri-fusion lors de l'établissement de connexions de table, Oracle effectuera les étapes suivantes dans l'ordre :

a. Accédez à la table t1 avec la condition de prédicat spécifiée dans le SQL cible, puis accédez aux résultats. trié en fonction de la colonne de connexion de la table t1, et l'ensemble de résultats triés est enregistré comme s1

b. Accédez à la table t2 en fonction des conditions de prédicat spécifiées dans le SQL cible, puis triez les résultats d'accès en fonction. à la colonne de connexion de la table t2, l'ensemble de résultats triés est enregistré comme s2

c Effectuez une opération de fusion sur s1 et s2 et supprimez les enregistrements correspondants comme ensemble de résultats final

Les avantages, les inconvénients et l'application de la connexion par fusion de tri Scénario :

a. Habituellement, l'effet de la jointure par hachage est meilleur que la jointure par fusion de tri. Cependant, si la source de la ligne a été triée, il n'est pas nécessaire de trier. à nouveau lors de l'exécution de la jointure par fusion de tri. Dans ce cas, la jointure par fusion de tri sera meilleure que celle de la jointure par hachage

b Normalement, la jointure par fusion de tri ne sera utilisée que lorsque les situations suivantes se produisent :

<.>1) Mode RBO

2) Jointure de valeurs inégales (>,<,>=,<=)

3) Lorsque la jointure par hachage est désactivée (_HASH_JOIN_ENABLED=false)

Exemple

2. Jointure de boucles imbriquées (jointure de boucles imbriquées)

SQL> select * from scott.emp t1,scott.emp t2 where t1.empno > t2.mgr;

89 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3950110903

----------------------------------------------------------------------------------------
| Id  | Operation                     | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |        |    62 |  4712 |     6  (17)| 00:00:01 |
|   1 |  MERGE JOIN                   |        |    62 |  4712 |     6  (17)| 00:00:01 |
|   2 |   SORT JOIN                   |        |    14 |   532 |     2   (0)| 00:00:01 |
|   3 |    TABLE ACCESS BY INDEX ROWID| EMP    |    14 |   532 |     2   (0)| 00:00:01 |
|   4 |     INDEX FULL SCAN           | PK_EMP |    14 |       |     1   (0)| 00:00:01 |
|*  5 |   SORT JOIN                   |        |    14 |   532 |     4  (25)| 00:00:01 |
|   6 |    TABLE ACCESS FULL          | EMP    |    14 |   532 |     3   (0)| 00:00:01 |
----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   5 - access(INTERNAL_FUNCTION("T1"."EMPNO")>INTERNAL_FUNCTION("T2"."MGR"))
       filter(INTERNAL_FUNCTION("T1"."EMPNO")>INTERNAL_FUNCTION("T2"."MGR"))


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
          8  consistent gets
          0  physical reads
          0  redo size
       6612  bytes sent via SQL*Net to client
        575  bytes received via SQL*Net from client
          7  SQL*Net roundtrips to/from client
          2  sorts (memory)
          0  sorts (disk)
         89  rows processed

SQL>
Copier après la connexion
Une jointure de boucles imbriquées est une sorte de connexion de table entre deux tables qui repose sur deux niveaux. de boucles imbriquées (boucle externe/boucle interne) Boucle) pour obtenir la méthode de connexion de table pour connecter l'ensemble de résultats

Si la table t1 et la table t2 utilisent une connexion en boucle imbriquée lors de la connexion à la table, alors Oracle effectuera les étapes suivantes dans l'ordre :

a. Tout d'abord, l'optimiseur déterminera qui est la table de pilotage et qui est la table pilotée en t1 et t2 selon certaines règles. La table de pilotage est utilisée pour l'extérieur. boucle, et la table pilotée est utilisée pour la boucle mémoire. Supposons que t1 est la table pilote

b. Accédez à la table pilote t1 avec la condition de prédicat spécifiée dans le SQL cible, et obtenez l'ensemble de résultats s1

c. table t2 en même temps, c'est-à-dire retirer Les enregistrements dans s1 correspondent à la table pilotée t2 selon les conditions de connexion. Enfin, l'ensemble de résultats sera renvoyé

Avantages, inconvénients et scénarios applicables de connexion en boucle imbriquée :

a Peut obtenir une réponse rapide, c'est-à-dire qu'il peut renvoyer la connexion qui a été connectée. et répond aux exigences du premier coup Enregistrements conditionnels, sans avoir à attendre que toutes les opérations de connexion soient terminées avant de renvoyer le résultat de la connexion

b Il convient à l'ensemble de résultats de conduite correspondant à la table de conduite. le nombre d'enregistrements dans l'ensemble de résultats de pilotage est faible, et en même temps, dans la connexion de la table pilotée, il existe un index unique sur la colonne (ou un index non unique avec une bonne sélectivité sur la colonne connectée de la table pilotée )

Exemple

3. Hash join

SQL> select /*+ gather_plan_statistics use_nl(t1,t2)*/* from scott.emp t1,scott.dept t2 where t1.deptno = t2.deptno;
SQL> select * from table(dbms_xplan.display_cursor(null,0,&#39;allstats,last&#39;));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID  dcsf9m1rzzga5, child number 0
-------------------------------------
select /*+ gather_plan_statistics use_nl(t1,t2)*/* from scott.emp
t1,scott.dept t2 where t1.deptno = t2.deptno

Plan hash value: 4192419542

-------------------------------------------------------------------------------------
| Id  | Operation          | Name | Starts | E-Rows | A-Rows |   A-Time   | Buffers |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |      1 |        |     14 |00:00:00.01 |      32 |
|   1 |  NESTED LOOPS      |      |      1 |     14 |     14 |00:00:00.01 |      32 |
|   2 |   TABLE ACCESS FULL| DEPT |      1 |      4 |      4 |00:00:00.01 |       7 |
|*  3 |   TABLE ACCESS FULL| EMP  |      4 |      4 |     14 |00:00:00.01 |      25 |
-------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------
- filter("T1"."DEPTNO"="T2"."DEPTNO")
rows selected.

SQL>
Copier après la connexion
Hash join est une méthode de connexion de table qui repose sur une opération de hachage pour obtenir le résultat de la connexion. défini lorsque deux tables sont connectées. Il a été introduit après Oracle 7.3

Hash join fonctionne en hachant une table (généralement une table plus petite) et en la stockant dans une liste de hachage, en extrayant les enregistrements d'une autre table et en effectuant une opération de hachage. , et en trouvant l'enregistrement correspondant dans la valeur de hachage, faites la correspondance

La jointure par hachage ne s'applique qu'au CBO et ne peut être utilisée que pour des conditions de jointure équivalentes

La jointure par hachage est. très approprié pour joindre de petites tables et de grandes tables, en particulier lorsque la sélectivité de la colonne de jointure d'une petite table est très bonne, alors le temps d'exécution de la jointure par hachage peut être approximativement considéré comme équivalent au temps passé sur une analyse complète de la table de la grande table

Lors de la connexion de hachage, la table de hachage correspondant à l'ensemble de résultats du pilote peut être entièrement hébergée dans la mémoire (espace de travail PGA. À ce stade, l'efficacité d'exécution de la connexion de hachage est très élevée

Problèmes de performances de connexion de hachage Il peut être diagnostiqué via l'événement 10104. Les instructions pertinentes sont les suivantes : buckets : buckets non vides : la situation des enregistrements vides et des enregistrements non vides dans le bucket de hachage

Nombre total. de lignes : le nombre d'enregistrements dans l'ensemble de résultats de pilotage

Nombre maximum de lignes dans un bucket : le bucket de hachage contenant le plus grand nombre d'enregistrements Contient le nombre d'enregistrements

Filtrage bitmap désactivé : s'il faut activer le filtrage bitmap

Exemple



[Recommandations associées :
Tutoriel SQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Redstone / Red Currency Listing Prix Prévisions et explication détaillée de l'économie de jetons Redstone / Red Currency Listing Prix Prévisions et explication détaillée de l'économie de jetons Mar 03, 2025 pm 10:42 PM

Cette fois, le jeton Redstone $ Red sera lancé sur Binance LaunchPool sur Binance TGE! C'est également la première fois que Binance lance un mécanisme de limite de trading avant le marché! La limite du premier jour est de 200%, et l'interdiction sera levée après 3 jours pour éviter que "le pic sera atteint lorsque le marché s'ouvrira"! Launchpool Mécanisme présente le BinancelAunchpool participant à Redstone qui doit engager la période d'activité des jetons désignés (BNB, USDC, FDUSD) est de 48 heures: 08:00 UTC le 26 février 2025 à 08:00 UTC le 28 février 2025 terminant cette règle de limite quotidienne avant le marché: 18:00 le 28 février, 2025

Comment faire des paramètres de sécurité Oracle sur Debian Comment faire des paramètres de sécurité Oracle sur Debian Apr 02, 2025 am 07:48 AM

Pour renforcer la sécurité de la base de données Oracle sur le système Debian, il faut de nombreux aspects pour commencer. Les étapes suivantes fournissent un cadre pour la configuration sécurisée: 1. Installation de la base de données Oracle et préparation du système de configuration initiale: Assurez-vous que le système Debian a été mis à jour vers la dernière version, la configuration du réseau est correcte et tous les packages logiciels requis sont installés. Il est recommandé de se référer à des documents officiels ou à des ressources tierces fiables pour l'installation. Utilisateurs et groupes: Créez un groupe d'utilisateurs Oracle dédié (tel que Oinstall, DBA, BackupDBA) et définissez-le pour lui. 2. Restrictions de sécurité Définir les restrictions de ressources: Edit /etc/security/limits.d/30-oracle.conf

Dois-je installer un client Oracle lors de la connexion à une base de données Oracle à l'aide de Go? Dois-je installer un client Oracle lors de la connexion à une base de données Oracle à l'aide de Go? Apr 02, 2025 pm 03:48 PM

Dois-je installer un client Oracle lors de la connexion à une base de données Oracle à l'aide de Go? Lorsque vous développez GO, la connexion aux bases de données Oracle est une exigence commune ...

Oracle PL / SQL Deep Dive: Mastering Procédures, fonctions et packages Oracle PL / SQL Deep Dive: Mastering Procédures, fonctions et packages Apr 03, 2025 am 12:03 AM

Les procédures, fonctions et packages dans OraclePL / SQL sont utilisés pour effectuer des opérations, renvoyer des valeurs et organiser le code, respectivement. 1. Le processus est utilisé pour effectuer des opérations telles que la sortie des salutations. 2. La fonction est utilisée pour calculer et renvoyer une valeur, comme le calcul de la somme de deux nombres. 3. Les packages sont utilisés pour organiser des éléments pertinents et améliorer la modularité et la maintenabilité du code, telles que les packages qui gèrent l'inventaire.

Combien de jetons rouges pouvez-vous obtenir lorsque vous participez à Redstone (Red) Airdrops? Combien de jetons rouges pouvez-vous obtenir lorsque vous participez à Redstone (Red) Airdrops? Mar 04, 2025 pm 05:48 PM

L'activité aérienne de Redstone (Red) bat son plein, attirant de nombreux investisseurs à participer. Redstone est un Oracle de données transversales avancées, avec un réseau de validateurs solides, des capacités d'intégration des données en temps réel et des mécanismes d'incitation communautaire, et a été soutenu par de nombreux établissements d'investissement bien connus. Ses avantages technologiques uniques le distinguent sur le marché Oracle hautement compétitif et présente un énorme potentiel pour le développement futur. Cet article effectuera une analyse approfondie du projet Redstone, explorera le nombre de jetons rouges disponibles pour participer à AirDrops et faire une perspective sur le prix des jetons rouges, aidant les investisseurs à mieux comprendre et évaluer le projet Redstone et les risques d'investissement. Surtout pour les détenteurs de BNB, la participation à Airdrops aura la possibilité d'obtenir des jetons rouges et d'enrichir le groupe d'actifs numériques

Quels sont les logiciels système ERP? Logiciel système ERP recommandé Quels sont les logiciels système ERP? Logiciel système ERP recommandé Apr 03, 2025 pm 12:54 PM

Lors de la sélection du logiciel ERP, clarifiez d'abord les besoins de l'entreprise, y compris l'industrie, l'échelle, le budget et l'infrastructure informatique, puis sélectionnez le système qui répond aux besoins en fonction du processus commercial principal. Les systèmes ERP courants comprennent: SAP convient aux grandes entreprises, avec des fonctions puissantes mais des fonctions coûteuses; Oracle a des fonctions complètes mais est coûteuse, adaptée aux grandes entreprises; Odoo convient aux petites et moyennes entreprises, à faible coût et personnalisables; Le SAAS ERP est déployé dans le cloud, payant à la demande et adapté aux entreprises en développement rapide. Avant de choisir, vous devez effectuer un essai, consulter des conseils professionnels et faire attention aux services après-vente pour choisir le système ERP qui vous convient le mieux.

60 termes incontournables de l'industrie dans le domaine des devises, garantis pour vous familiariser avec le jargon cryptographique 60 termes incontournables de l'industrie dans le domaine des devises, garantis pour vous familiariser avec le jargon cryptographique Dec 17, 2024 pm 03:20 PM

Vous voulez naviguer dans le monde des cryptomonnaies ? À lire absolument ce guide de 60 pages sur les termes de l'industrie ! Ce guide couvre tout, des concepts de base tels que les crypto-monnaies, les blockchains et les pièces stables, aux termes commerciaux tels que long, short et effet de levier, en passant par les termes techniques tels que les nœuds, les contrats intelligents et DeFi. Une solide compréhension de ces termes vous fournira une base solide pour des conversations et des décisions d’investissement en toute confiance dans la communauté des cryptomonnaies.

Sur quelle chaîne se trouve la pièce SUPRA ? Sur quelle chaîne se trouve la pièce SUPRA ? Dec 09, 2024 pm 12:28 PM

La pièce SUPRA est un actif inter-chaînes conçu pour améliorer l’écosystème DeFi. Il est développé par l'équipe SupraOracles, spécialisée dans les services Oracle blockchain. SUPRA Coin peut être utilisé sur plusieurs réseaux blockchain, notamment Ethereum, Binance Smart Chain, Polygon, Avalanche et Fantom, favorisant ainsi l'interopérabilité entre les chaînes. Il a de multiples utilisations dans l’écosystème DeFi, notamment les services Oracle, la gouvernance, le jalonnement, le paiement des frais et les transactions inter-chaînes.

See all articles