Heim Datenbank MySQL-Tutorial sql中 in , not in , exists , not exists效率分析_MySQL

sql中 in , not in , exists , not exists效率分析_MySQL

May 30, 2016 pm 05:09 PM
效率

in和exists执行时,in是先执行子查询中的查询,然后再执行主查询。而exists查询它是先执行主查询,即外层表的查询,然后再执行子查询。

 

exists 和 in 在执行时效率单从执行时间来说差不多,exists要稍微优于in。在使用时一般应该是用exists而不用in

 

如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in,反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。IN时不对NULL进行处理。

 

not exists 和 not in 比较时,not exists 的效率比较高。

 

为了说明测试结果,我把emp1表中的数据到了315392条。emp2中删除只有2条件数据。测试的依据是执行的时间来说明的。

 

emp1中的数据记录情况。

 

SQL> select count(*) from emp1;

 

  COUNT(*)

 

----------

 

315392

 

emp2中的数据记录情况:

 

SQL> select count(*) from emp2;

 

 

 

  COUNT(*)

 

----------

 

   2

 

1、  执行exists查询,要求在emp1中查询出所有存在于emp2的数据总数

 

 SQL> select count(*) from emp1 where exists ( select null from emp2 where emp1.ename = emp2.ename);

 

  COUNT(*)

 

----------

 

     45056

 

执行次数十次,最大的一次为0.125S

 

2、    使用not exists查询出所在不在emp2中的数据总数

 

SQL> select count(*) from emp1 where not exists ( select null from emp2 where emp1.ename = emp2.ename);

 

     COUNT(*)

 

----------

 

270336

 

执行次数十次,最大的一次为0.141S

 

3、执行in 查询,要求在emp1中查询出所有存在于emp2的数据总数

 

SQL> select count(*) from emp1 where ename in ( select ename from emp2);

 

  COUNT(*)

 

----------

 

     45056

 

执行十次,最大的一次为0.141S

 

4、使用not in查询出所在不在emp2中的数据总数

 

SQL> select count(*) from emp1 where ename not in ( select ename from emp2 );

 

  COUNT(*)

 

----------

 

270336

 

执行十次,最长一次为0.328S

 

5、使用in查询,调用外层与子查询的位置,要求查询出存在于emp2中,且存在于emp1中的数据记录数

 

SQL> select count(*) from emp2 where ename in (select ename from emp1 );

 

  COUNT(*)

 

----------

 

 2

 

执行次数十次,最长的一次为0.047S

 

6、使用exists查询,调用外层与子查询的位置,要求查询出存在于emp2中,且存在于emp1中的数据记录数

 

SQL> select count(*) from emp2 where ename in (select ename from emp1 );

 

  COUNT(*)

 

----------

 

 2

 

执行次数十次,最长的一次为0.047S

 

综上所述:在使用in 和 exists时,个人觉得,效率差不多。而在not in 和 not exists比较时,not exists的效率要比not in的效率要高。

 

当使用in时,子查询where条件不受外层的影响,自动优化会转成exist语句,它的效率和exist一样。(没有验证)

 

如select * from t1 where f1 in (select f1 from t2 where t2.fx='x') 这时,认为in 和 exists效率一样。

 

IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So aktivieren oder deaktivieren Sie den Produktivitätsmodus für eine App oder einen Prozess in Windows 11 So aktivieren oder deaktivieren Sie den Produktivitätsmodus für eine App oder einen Prozess in Windows 11 Apr 14, 2023 pm 09:46 PM

Der neue Task-Manager in Windows 11 22H2 ist ein Segen für Power-User. Es bietet jetzt eine bessere Benutzeroberfläche mit zusätzlichen Daten, um Ihre laufenden Prozesse, Aufgaben, Dienste und Hardwarekomponenten im Auge zu behalten. Wenn Sie den neuen Task-Manager verwendet haben, ist Ihnen möglicherweise der neue Produktivitätsmodus aufgefallen. Was ist das? Trägt es dazu bei, die Leistung von Windows 11-Systemen zu verbessern? Finden wir es heraus! Was ist der Produktivitätsmodus in Windows 11? Der Produktivitätsmodus ist eine der Aufgaben im Task-Manager

Er kann Menschen in zwei Stunden übertreffen! Die neueste KI von DeepMind führt 26 Atari-Spiele im Speedrun aus Er kann Menschen in zwei Stunden übertreffen! Die neueste KI von DeepMind führt 26 Atari-Spiele im Speedrun aus Jul 03, 2023 pm 08:57 PM

Der KI-Agent von DeepMind ist wieder am Werk! Achtung, dieser Typ namens BBF hat 26 Atari-Spiele in nur 2 Stunden gemeistert. Seine Effizienz ist der von Menschen ebenbürtig und übertrifft alle seine Vorgänger. Wissen Sie, KI-Agenten waren bei der Lösung von Problemen durch verstärkendes Lernen schon immer effektiv, aber das größte Problem besteht darin, dass diese Methode sehr ineffizient ist und lange Zeit zum Erkunden benötigt. Bild Der Durchbruch von BBF liegt im Hinblick auf die Effizienz. Kein Wunder, dass der vollständige Name Bigger, Better oder Faster lauten kann. Darüber hinaus kann das Training auf nur einer einzigen Karte durchgeführt werden, und auch der Bedarf an Rechenleistung wird deutlich reduziert. BBF wurde gemeinsam von Google DeepMind und der Universität Montreal vorgeschlagen und die Daten und der Code sind derzeit Open Source. Der höchstmögliche Mensch

Praktischer Leitfaden zur PyCharm-Remote-Entwicklung: Verbessern Sie die Entwicklungseffizienz Praktischer Leitfaden zur PyCharm-Remote-Entwicklung: Verbessern Sie die Entwicklungseffizienz Feb 23, 2024 pm 01:30 PM

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung (IDE), die von Python-Entwicklern häufig zum Schreiben von Code, zum Debuggen und zum Projektmanagement verwendet wird. Im eigentlichen Entwicklungsprozess werden die meisten Entwickler mit unterschiedlichen Problemen konfrontiert sein, z. B. wie die Entwicklungseffizienz verbessert werden kann, wie mit Teammitgliedern bei der Entwicklung zusammengearbeitet werden kann usw. In diesem Artikel wird ein praktischer Leitfaden zur Remote-Entwicklung von PyCharm vorgestellt, der Entwicklern dabei hilft, PyCharm besser für die Remote-Entwicklung zu nutzen und die Arbeitseffizienz zu verbessern. 1. Vorbereitungsarbeit in PyCh

Privater Einsatz von Stable Diffusion zum Spielen mit KI-Zeichnung Privater Einsatz von Stable Diffusion zum Spielen mit KI-Zeichnung Mar 12, 2024 pm 05:49 PM

StableDiffusion ist ein Open-Source-Deep-Learning-Modell. Seine Hauptfunktion besteht in der Generierung hochwertiger Bilder durch Textbeschreibungen und unterstützt Funktionen wie Diagrammgenerierung, Modellzusammenführung und Modelltraining. Die Bedienoberfläche des Modells ist in der Abbildung unten zu sehen. So erstellen Sie ein Bild: Beim Erstellen eines Bildes wird es in Aufforderungswörter und negative Aufforderungswörter unterteilt Versuchen Sie, die gewünschte Szene, das gewünschte Objekt, den gewünschten Stil und die gewünschte Farbe klar zu beschreiben. Anstatt nur zu sagen: „Der Hirsch trinkt Wasser“, heißt es „ein Bach, umgeben von dichten Bäumen, und neben dem Bach gibt es Hirsche, die Wasser trinken“. Die negativen Aufforderungswörter lauten beispielsweise in der entgegengesetzten Richtung: Keine Gebäude, keine Menschen, keine Brücken, keine Zäune und eine zu vage Beschreibung können zu ungenauen Ergebnissen führen.

Wie aktiviere ich den Energiesparmodus in Microsoft Edge? Wie aktiviere ich den Energiesparmodus in Microsoft Edge? Apr 20, 2023 pm 08:22 PM

Chromium-basierte Browser wie Edge verbrauchen viele Ressourcen, Sie können jedoch den Effizienzmodus in Microsoft Edge aktivieren, um die Leistung zu verbessern. Der Microsoft Edge-Webbrowser hat seit seinen bescheidenen Anfängen einen langen Weg zurückgelegt. Kürzlich hat Microsoft dem Browser einen neuen Effizienzmodus hinzugefügt, der die Gesamtleistung des Browsers auf dem PC verbessern soll. Der Effizienzmodus trägt dazu bei, die Batterielebensdauer zu verlängern und den Ressourcenverbrauch des Systems zu reduzieren. Beispielsweise sind mit Chromium erstellte Browser wie Google Chrome und Microsoft Edge dafür bekannt, dass sie RAM- und CPU-Zyklen beanspruchen. Daher der Reihe nach

Beherrschen Sie Python, um die Arbeitseffizienz und Lebensqualität zu verbessern Beherrschen Sie Python, um die Arbeitseffizienz und Lebensqualität zu verbessern Feb 18, 2024 pm 05:57 PM

Titel: Python macht das Leben bequemer: Beherrschen Sie diese Sprache, um die Arbeitseffizienz und Lebensqualität zu verbessern. Als leistungsstarke und leicht zu erlernende Programmiersprache erfreut sich Python im heutigen digitalen Zeitalter immer größerer Beliebtheit. Python kann nicht nur zum Schreiben von Programmen und zur Durchführung von Datenanalysen eine große Rolle in unserem täglichen Leben spielen. Die Beherrschung dieser Sprache kann nicht nur die Arbeitseffizienz verbessern, sondern auch die Lebensqualität verbessern. In diesem Artikel werden spezifische Codebeispiele verwendet, um die breite Anwendung von Python im Leben zu demonstrieren und den Lesern zu helfen

Wie Scrapy die Crawling-Stabilität und Crawling-Effizienz verbessert Wie Scrapy die Crawling-Stabilität und Crawling-Effizienz verbessert Jun 23, 2023 am 08:38 AM

Scrapy ist ein leistungsstarkes, in Python geschriebenes Webcrawler-Framework, mit dem Benutzer schnell und effizient die erforderlichen Informationen aus dem Internet crawlen können. Bei der Verwendung von Scrapy zum Crawlen treten jedoch häufig Probleme auf, z. B. Crawling-Fehler, unvollständige Daten oder langsame Crawling-Geschwindigkeit. Diese Probleme beeinträchtigen die Effizienz und Stabilität des Crawlers. Daher wird in diesem Artikel untersucht, wie Scrapy die Crawling-Stabilität und Crawling-Effizienz verbessert. Legen Sie beim Crawlen des Webs Anforderungsheader und User-Agent fest.

Vollständige Analyse des Java-Sammlungsframeworks: Analyse der Datenstruktur und Enthüllung des Geheimnisses effizienter Speicherung Vollständige Analyse des Java-Sammlungsframeworks: Analyse der Datenstruktur und Enthüllung des Geheimnisses effizienter Speicherung Feb 23, 2024 am 10:49 AM

Überblick über das Java Collection Framework Das Java Collection Framework ist ein wichtiger Teil der Programmiersprache Java. Es stellt eine Reihe von Containerklassenbibliotheken bereit, die Daten speichern und verwalten können. Diese Containerklassenbibliotheken verfügen über unterschiedliche Datenstrukturen, um den Datenspeicher- und -verarbeitungsanforderungen in verschiedenen Szenarien gerecht zu werden. Der Vorteil des Sammlungsframeworks besteht darin, dass es eine einheitliche Schnittstelle bietet, die es Entwicklern ermöglicht, verschiedene Containerklassenbibliotheken auf die gleiche Weise zu betreiben, wodurch die Entwicklungsschwierigkeiten verringert werden. Datenstrukturen des Java-Sammlungsframeworks Das Java-Sammlungsframework enthält eine Vielzahl von Datenstrukturen, von denen jede ihre eigenen einzigartigen Eigenschaften und anwendbaren Szenarien aufweist. Im Folgenden sind einige gängige Datenstrukturen des Java Collection Frameworks aufgeführt: 1. Liste: Liste ist eine geordnete Sammlung, die die Wiederholung von Elementen ermöglicht. Li

See all articles