Rumah pangkalan data tutorial mysql sql中 in , not in , exists , not exists效率分析_MySQL

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

May 30, 2016 pm 05:09 PM
kecekapan

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适合于外表小而内表大的情况。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menghidupkan atau mematikan mod produktiviti untuk apl atau proses dalam Windows 11 Cara menghidupkan atau mematikan mod produktiviti untuk apl atau proses dalam Windows 11 Apr 14, 2023 pm 09:46 PM

Pengurus Tugas baharu dalam Windows 11 22H2 adalah rahmat untuk pengguna berkuasa. Ia kini menyediakan pengalaman UI yang lebih baik dengan data tambahan untuk memantau proses, tugas, perkhidmatan dan komponen perkakasan anda yang sedang berjalan. Jika anda telah menggunakan Pengurus Tugas baharu, anda mungkin perasan mod produktiviti baharu. apa itu? Adakah ia membantu meningkatkan prestasi sistem Windows 11? Mari ketahui! Apakah Mod Produktiviti dalam Windows 11? Mod produktiviti ialah salah satu tugas dalam Pengurus Tugas

Dia boleh mengatasi manusia dalam masa dua jam! Kelajuan AI terbaharu DeepMind menjalankan 26 permainan Atari Dia boleh mengatasi manusia dalam masa dua jam! Kelajuan AI terbaharu DeepMind menjalankan 26 permainan Atari Jul 03, 2023 pm 08:57 PM

Ejen AI DeepMind sedang bekerja semula! Perhatikan, lelaki bernama BBF ini menguasai 26 permainan Atari dalam masa 2 jam sahaja kecekapannya setara dengan manusia, mengatasi semua pendahulunya. Anda tahu, ejen AI sentiasa berkesan dalam menyelesaikan masalah melalui pembelajaran pengukuhan, tetapi masalah terbesar ialah kaedah ini sangat tidak cekap dan memerlukan masa yang lama untuk diterokai. Gambar Kejayaan yang dibawa oleh BBF adalah dari segi kecekapan. Tidak hairanlah nama penuhnya boleh dipanggil Bigger, Better, atau Faster. Selain itu, ia boleh melengkapkan latihan hanya pada satu kad, dan keperluan kuasa pengkomputeran juga jauh berkurangan. BBF telah dicadangkan bersama oleh Google DeepMind dan Universiti Montreal, dan data serta kod tersebut pada masa ini adalah sumber terbuka. Manusia tertinggi yang boleh dicapai

Panduan Praktikal Pembangunan Jauh PyCharm: Tingkatkan Kecekapan Pembangunan Panduan Praktikal Pembangunan Jauh PyCharm: Tingkatkan Kecekapan Pembangunan Feb 23, 2024 pm 01:30 PM

PyCharm ialah persekitaran pembangunan bersepadu (IDE) Python yang berkuasa yang digunakan secara meluas oleh pembangun Python untuk penulisan kod, penyahpepijatan dan pengurusan projek. Dalam proses pembangunan sebenar, kebanyakan pembangun akan menghadapi masalah yang berbeza, seperti cara meningkatkan kecekapan pembangunan, cara bekerjasama dengan ahli pasukan dalam pembangunan, dsb. Artikel ini akan memperkenalkan panduan praktikal untuk pembangunan jauh PyCharm untuk membantu pembangun menggunakan PyCharm dengan lebih baik untuk pembangunan jauh dan meningkatkan kecekapan kerja. 1. Kerja penyediaan dalam PyCh

Penggunaan peribadi Stable Diffusion untuk bermain dengan lukisan AI Penggunaan peribadi Stable Diffusion untuk bermain dengan lukisan AI Mar 12, 2024 pm 05:49 PM

StableDiffusion ialah model pembelajaran dalam sumber terbuka Fungsi utamanya adalah untuk menjana imej berkualiti tinggi melalui penerangan teks, dan menyokong fungsi seperti penjanaan graf, penggabungan model dan latihan model. Antara muka operasi model boleh dilihat dalam rajah di bawah. Bagaimana untuk menghasilkan gambar. Berikut adalah pengenalan kepada proses membuat gambar air minuman rusa Apabila menghasilkan gambar, ia dibahagikan kepada kata gesaan dan kata gesaan negatif jelas dan cuba terangkan pemandangan, objek, gaya dan warna yang anda inginkan secara terperinci. Sebagai contoh, daripada hanya mengatakan "rusa minum air", ia berkata "sebatang sungai, di sebelah pokok yang lebat, dan terdapat rusa minum air di sebelah anak sungai". tiada bangunan, tiada orang , tiada jambatan, tiada pagar, dan penerangan yang terlalu kabur boleh membawa kepada keputusan yang tidak konsisten.

Bagaimana untuk menghidupkan mod penjimatan kuasa dalam Microsoft Edge? Bagaimana untuk menghidupkan mod penjimatan kuasa dalam Microsoft Edge? Apr 20, 2023 pm 08:22 PM

Penyemak imbas berasaskan Chromium seperti Edge menggunakan banyak sumber, tetapi anda boleh mendayakan mod kecekapan dalam Microsoft Edge untuk meningkatkan prestasi. Penyemak imbas web Microsoft Edge telah berjalan jauh sejak permulaannya yang sederhana. Baru-baru ini, Microsoft menambah mod kecekapan baharu pada penyemak imbas, yang direka untuk meningkatkan prestasi keseluruhan penyemak imbas pada PC. Mod kecekapan membantu memanjangkan hayat bateri dan mengurangkan penggunaan sumber sistem. Sebagai contoh, penyemak imbas yang dibina dengan Chromium, seperti Google Chrome dan Microsoft Edge, terkenal kerana memonopoli kitaran RAM dan CPU. Oleh itu, mengikut urutan

Kuasai Python untuk meningkatkan kecekapan kerja dan kualiti hidup Kuasai Python untuk meningkatkan kecekapan kerja dan kualiti hidup Feb 18, 2024 pm 05:57 PM

Tajuk: Python menjadikan kehidupan lebih mudah: Kuasai bahasa ini untuk meningkatkan kecekapan kerja dan kualiti hidup Sebagai bahasa pengaturcaraan yang berkuasa dan mudah dipelajari, Python semakin popular dalam era digital hari ini. Bukan hanya untuk menulis program dan melakukan analisis data, Python juga boleh memainkan peranan yang besar dalam kehidupan seharian kita. Menguasai bahasa ini bukan sahaja dapat meningkatkan kecekapan kerja, tetapi juga meningkatkan kualiti hidup. Artikel ini akan menggunakan contoh kod khusus untuk menunjukkan aplikasi Python yang luas dalam kehidupan dan membantu pembaca

Cara Scrapy meningkatkan kestabilan merangkak dan kecekapan merangkak Cara Scrapy meningkatkan kestabilan merangkak dan kecekapan merangkak Jun 23, 2023 am 08:38 AM

Scrapy ialah rangka kerja perangkak web yang berkuasa yang ditulis dalam Python, yang boleh membantu pengguna merangkak dengan cepat dan cekap maklumat yang diperlukan daripada Internet. Walau bagaimanapun, dalam proses menggunakan Scrapy untuk merangkak, anda sering menghadapi beberapa masalah, seperti kegagalan merangkak, data tidak lengkap atau kelajuan merangkak yang perlahan Masalah ini akan menjejaskan kecekapan dan kestabilan perangkak. Oleh itu, artikel ini akan meneroka cara Scrapy mempertingkatkan kestabilan merangkak dan kecekapan merangkak. Tetapkan pengepala permintaan dan Ejen Pengguna semasa merangkak web,

Analisis penuh rangka kerja pengumpulan Java: membedah struktur data dan mendedahkan rahsia storan yang cekap Analisis penuh rangka kerja pengumpulan Java: membedah struktur data dan mendedahkan rahsia storan yang cekap Feb 23, 2024 am 10:49 AM

Gambaran Keseluruhan Rangka Kerja Koleksi Java Rangka kerja pengumpulan Java ialah bahagian penting dalam bahasa pengaturcaraan Java Ia menyediakan satu siri perpustakaan kelas kontena yang boleh menyimpan dan mengurus data. Pustaka kelas kontena ini mempunyai struktur data yang berbeza untuk memenuhi keperluan penyimpanan dan pemprosesan data dalam senario yang berbeza. Kelebihan rangka kerja koleksi ialah ia menyediakan antara muka bersatu, membolehkan pembangun mengendalikan perpustakaan kelas kontena yang berbeza dengan cara yang sama, dengan itu mengurangkan kesukaran pembangunan. Struktur data rangka kerja pengumpulan Java Rangka kerja pengumpulan Java mengandungi pelbagai struktur data, setiap satunya mempunyai ciri unik dan senario yang boleh digunakan. Berikut adalah beberapa struktur data rangka kerja pengumpulan Java yang biasa: 1. Senarai: Senarai ialah koleksi tersusun yang membolehkan elemen diulang. Li

See all articles