SQL 语句优化方法30例_MySQL
bitsCN.com
1. /*+ALL_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
例如:
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
2. /*+FIRST_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
例如:
SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
3. /*+CHOOSE*/
表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;
表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法;
例如:
SELECT /*+CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
4. /*+RULE*/
表明对语句块选择基于规则的优化方法.
例如:
SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';
5. /*+FULL(TABLE)*/
表明对表选择全局扫描的方法.
例如:
SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT';
6. /*+ROWID(TABLE)*/
提示明确表明对指定表根据ROWID进行访问.
例如:
SELECT /*+ROWID(BSEMPMS)*/ * FROM BSEMPMS WHERE ROWID>='AAAAAAAAAAAAAA'
AND EMP_NO='SCOTT';
7. /*+CLUSTER(TABLE)*/
提示明确表明对指定表选择簇扫描的访问方法,它只对簇对象有效.
例如:
SELECT /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS
WHERE DPT_NO='TEC304' AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
8. /*+INDEX(TABLE INDEX_NAME)*/
表明对表选择索引的扫描方法.
例如:
SELECT /*+INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */ FROM BSEMPMS WHERE SEX='M';
9. /*+INDEX_ASC(TABLE INDEX_NAME)*/
表明对表选择索引升序的扫描方法.
例如:
SELECT /*+INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';
10. /*+INDEX_COMBINE*/
为指定表选择位图访问路经,如果INDEX_COMBINE中没有提供作为参数的索引,将选择出位图索引的布尔组合方式.
例如:
SELECT /*+INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMS
WHERE SAL
11. /*+INDEX_JOIN(TABLE INDEX_NAME)*/
提示明确命令优化器使用索引作为访问路径.
例如:
SELECT /*+INDEX_JOIN(BSEMPMS SAL_HMI HIREDATE_BMI)*/ SAL,HIREDATE
FROM BSEMPMS WHERE SAL
12. /*+INDEX_DESC(TABLE INDEX_NAME)*/
表明对表选择索引降序的扫描方法.
例如:
SELECT /*+INDEX_DESC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';
13. /*+INDEX_FFS(TABLE INDEX_NAME)*/
对指定的表执行快速全索引扫描,而不是全表扫描的办法.
例如:
SELECT /*+INDEX_FFS(BSEMPMS IN_EMPNAM)*/ * FROM BSEMPMS WHERE DPT_NO='TEC305';
14. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,...*/
提示明确进行执行规划的选择,将几个单列索引的扫描合起来.
例如:
SELECT /*+INDEX_FFS(BSEMPMS IN_DPTNO,IN_EMPNO,IN_SEX)*/ * FROM BSEMPMS WHERE EMP_NO='SCOTT' AND DPT_NO='TDC306';
15. /*+USE_CONCAT*/
对查询中的WHERE后面的OR条件进行转换为UNION ALL的组合查询.
例如:
SELECT /*+USE_CONCAT*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';
16. /*+NO_EXPAND*/
对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展.
例如:
SELECT /*+NO_EXPAND*/ * FROM BSEMPMS WHERE DPT_NO='TDC506' AND SEX='M';
17. /*+NOWRITE*/
禁止对查询块的查询重写操作.
18. /*+REWRITE*/
可以将视图作为参数.
19. /*+MERGE(TABLE)*/
能够对视图的各个查询进行相应的合并.
例如:
SELECT /*+MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELET DPT_NO
,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO
AND A.SAL>V.AVG_SAL;
20. /*+NO_MERGE(TABLE)*/
对于有可合并的视图不再合并.
例如:
SELECT /*+NO_MERGE(V) */ A.EMP_NO,A.EMP_NAM,B.DPT_NO FROM BSEMPMS A (SELECT DPT_NO,AVG(SAL) AS AVG_SAL FROM BSEMPMS B GROUP BY DPT_NO) V WHERE A.DPT_NO=V.DPT_NO AND A.SAL>V.AVG_SAL;
21. /*+ORDERED*/
根据表出现在FROM中的顺序,ORDERED使ORACLE依此顺序对其连接.
例如:
SELECT /*+ORDERED*/ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.COL1=B.COL1 AND B.COL1=C.COL1;
22. /*+USE_NL(TABLE)*/
将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表.
例如:
SELECT /*+ORDERED USE_NL(BSEMPMS)*/ BSDPTMS.DPT_NO,BSEMPMS.EMP_NO,BSEMPMS.EMP_NAM FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
23. /*+USE_MERGE(TABLE)*/
将指定的表与其他行源通过合并排序连接方式连接起来.
例如:
SELECT /*+USE_MERGE(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
24. /*+USE_HASH(TABLE)*/
将指定的表与其他行源通过哈希连接方式连接起来.
例如:
SELECT /*+USE_HASH(BSEMPMS,BSDPTMS)*/ * FROM BSEMPMS,BSDPTMS WHERE BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;
25. /*+DRIVING_SITE(TABLE)*/
强制与ORACLE所选择的位置不同的表进行查询执行.
例如:
SELECT /*+DRIVING_SITE(DEPT)*/ * FROM BSEMPMS,DEPT@BSDPTMS WHERE BSEMPMS.DPT_NO=DEPT.DPT_NO;
26. /*+LEADING(TABLE)*/
将指定的表作为连接次序中的首表.
27. /*+CACHE(TABLE)*/
当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
例如:
SELECT /*+FULL(BSEMPMS) CAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
28. /*+NOCACHE(TABLE)*/
当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
例如:
SELECT /*+FULL(BSEMPMS) NOCAHE(BSEMPMS) */ EMP_NAM FROM BSEMPMS;
29. /*+APPEND*/
直接插入到表的最后,可以提高速度.
insert /*+append*/ into test1 select * from test4 ;
30. /*+NOAPPEND*/
通过在插入语句生存期内停止并行模式来启动常规插入.
insert /*+noappend*/ into test1 select * from test4 ;bitsCN.com

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

Il y aura beaucoup de ressources sur le disque réseau 115, alors comment trouver des ressources ? Les utilisateurs peuvent rechercher les ressources dont ils ont besoin dans le logiciel, puis accéder à l'interface de téléchargement, puis choisir de les enregistrer sur le disque réseau. Cette introduction à la méthode de recherche de ressources sur 115 disques réseau peut vous indiquer le contenu spécifique. Ce qui suit est une introduction détaillée, venez y jeter un œil. Comment trouver des ressources sur le disque réseau 115 ? Réponse : Recherchez le contenu dans le logiciel, puis cliquez pour enregistrer sur le disque réseau. Introduction détaillée : 1. Entrez d'abord les ressources souhaitées dans l'application. 2. Cliquez ensuite sur le lien mot-clé qui apparaît. 3. Entrez ensuite dans l'interface de téléchargement. 4. Cliquez sur Enregistrer sur le disque réseau à l'intérieur.

Explorer.exe plante en mode sans échec sous Windows 11 ? Pas plus. Microsoft vient de publier un nouveau correctif sur Dev Channel, et bien qu'il n'y ait aucune nouvelle fonctionnalité dans cette version, de nombreux correctifs et améliorations font leur chemin dans le programme Windows Insider, y compris un bug ennuyeux où Explorer.exe plante en mode sans échec. Eh bien, vous pouvez lui dire au revoir maintenant, au moins dans le programme Windows Insider. Mais comme pour toutes ces mises à jour, elles arriveront également sur les serveurs Windows live. Correction d'un problème qui empêchait Explorer.exe de fonctionner en mode sans échec. Cependant, quelques autres correctifs sont à venir pour l'Explorateur de fichiers, Microsoft souhaite donc le faire fonctionner.

Han Xiaoquan est un logiciel qui peut regarder de nombreux drames coréens, alors pourquoi n'y a-t-il soudainement aucune ressource ? Ce logiciel peut ne pas disposer de ressources en raison de problèmes de réseau, de problèmes de version ou de problèmes de droits d'auteur. Cet article sur la raison pour laquelle Han Xiaoquan n'a soudainement plus de ressources peut vous indiquer le contenu spécifique. Ce qui suit est une introduction détaillée, venez y jeter un œil. Pourquoi Han Xiaoquan n'a-t-il soudainement plus eu de ressources ? Réponse : En raison de problèmes de réseau, de problèmes de version et de problèmes de droits d'auteur, introduction détaillée : 1. Solution aux problèmes de réseau : vous pouvez choisir un autre réseau, puis vous reconnecter au logiciel pour essayer. . 2. Solution aux problèmes de version : les utilisateurs peuvent télécharger la dernière version de ce logiciel sur le site officiel. 3. Solutions aux problèmes de droits d'auteur : certains drames coréens sont retirés des étagères en raison de problèmes de droits d'auteur. Vous pouvez choisir d'autres drames coréens à regarder.

Dans le jeu Dying Light, de nombreux joueurs peuvent être entourés d'innombrables zombies au début en raison du manque de ressources. Parfois, ils prendront également des risques pour sauver les vagabonds piégés, et ces vagabonds pourront également fournir des tâches secondaires, qui seront richement récompensées une fois accomplies. Dying Light Unlimited Resource Acquisition Tout d’abord, trouvez un colis de secours et placez-le dans l’entrepôt. Sur la page d'accueil de [Inventaire], sélectionnez un article avec une plus grande quantité et cliquez avec le bouton gauche de la souris lorsqu'il est sélectionné. 2. Ensuite, appuyez sur [ESC] sans déplacer la souris. Appuyez rapidement sur F+A. Après environ 0,25 seconde, lorsque vous sentez que la page de l'entrepôt est sur le point d'apparaître, appuyez sur les boutons gauche et droit de la souris. . Ne déplacez pas la souris et n'appuyez pas et ne maintenez pas la pression. L'invite pour stocker les éléments apparaîtra et l'opération réussira. 3Enfin, trouvez le [Colis Catastrophe] dans l'entrepôt et soyez invité par

Principe directeur : Le langage Go lui-même ne prend pas directement en charge le développement d'interface graphique, mais le développement d'interface graphique peut être réalisé en appelant des bibliothèques dans d'autres langages ou en utilisant des outils existants. Cet article présentera certains outils et ressources couramment utilisés pour aider les lecteurs à mieux explorer la possibilité d'utiliser le langage Go pour le développement d'interfaces graphiques. 1. État actuel du développement de l'interface graphique du langage Go Le langage Go est un langage de programmation efficace et concis qui convient à divers domaines d'application, mais il n'est pas bon pour le développement d'interfaces graphiques. En raison des performances et des fonctionnalités de concurrence du langage Go, de nombreux développeurs souhaitent

Améliorer le débit du moteur de stockage : cas d'application MaxScale dans MySQL Introduction : Dans l'environnement actuel du big data et de la forte concurrence, comment améliorer le débit de la base de données est devenu un problème auquel de nombreuses entreprises et développeurs sont confrontés. En tant que base de données relationnelle open source couramment utilisée, l'optimisation des performances de MySQL a toujours attiré beaucoup d'attention. Cet article présentera une méthode pour améliorer le débit de la base de données MySQL à l'aide de l'outil MaxScale, ainsi que des cas d'application spécifiques. 1. Introduction à MaxScale MaxScale est

Désormais, ChatGPT ne prend plus en charge le paiement Plus. △La raison de la capture d'écran de ChatGPT est très simple : Forte demande. La demande était si élevée qu'OpenAI a dû suspendre les ventes du Plus. On ne sait pas quand il ouvrira plus tard. Il y a quelques jours, ChatGPT a provoqué des discussions animées en raison d'interdictions de comptes à grande échelle, et maintenant il a officiellement fermé la demande d'adhésion payante Plus. De nombreux internautes l'attribuent à des ressources informatiques insuffisantes, ce qui n'est plus un problème qui peut être résolu uniquement avec de l'argent. Microsoft, le bailleur de fonds, doit également fournir sa propre base d'utilisateurs. Il n’y a plus assez de puissance de calcul sur Terre pour répondre à la demande. Certains internautes qui ont déjà payé ont exprimé leur gratitude : je ne peux vraiment pas imaginer revenir à l’époque de GPT-3.5. ChatGPT closePlu

Java est un langage de programmation largement utilisé pour développer des applications et créer des sites Web. Cependant, lors du développement et du déploiement d'applications Java, vous pouvez rencontrer l'erreur suivante : Impossible de trouver les ressources de l'application. Cette erreur se produit souvent lors du packaging et du déploiement d'applications Java. Cet article traite des causes, des solutions et des moyens d'éviter cette erreur. Cause de l'erreur L'erreur de ressource d'application introuvable est généralement provoquée par certaines des raisons suivantes : 1.1 Le fichier est manquant ou endommagé : lorsque le package d'application ou le fichier de bibliothèque dépendant est manquant ou endommagé,
