Perbandingan antara pertanyaan penyertaan dan berbilang pertanyaan
Adakah pertanyaan berkaitan berbilang jadual MySQL lebih cekap atau pertanyaan berbilang jadual tunggal?
Apabila jumlah data tidak cukup besar, tiada masalah untuk menggunakan gabungan, tetapi ia biasanya dilakukan pada lapisan perkhidmatan
Pertama: Pengkomputeran pangkalan data bersendirian sumber adalah sangat mahal, dan pangkalan data memerlukan Perkhidmatan menulis dan membaca kedua-duanya memerlukan penggunaan CPU Untuk meningkatkan daya pemprosesan pangkalan data, dan perniagaan tidak mengambil berat tentang jurang kelewatan ratusan mikrosaat hingga milisaat, perniagaan akan meletakkan lebih banyak. pengiraan ke dalam lapisan perkhidmatan Lagipun, sumber Pengkomputeran mudah dikembangkan secara mendatar, tetapi pangkalan data adalah sukar, kebanyakan perniagaan akan meletakkan operasi pengkomputeran tulen ke dalam lapisan perkhidmatan, dan menggunakan pangkalan data sebagai sistem kv dengan keupayaan transaksi idea seni bina DB yang berfokuskan perniagaan dan berwajaran ringan pangkalan data Tiada cara untuk bergabung di antara mereka Sememangnya, perniagaan akan mengabstrak lapisan perkhidmatan untuk mengurangkan gandingan kepada pangkalan data.
Ketiga: Bagi sesetengah syarikat besar, disebabkan oleh skala data yang besar, mereka perlu sub-pangkalan data dan sub-jadual Untuk aplikasi sub-pangkalan data dan sub-jadual, penggunaan gabungan juga tertakluk kepada banyak sekatan, melainkan perniagaan boleh dijalankan dengan baik berdasarkan Kekunci sharding menjelaskan bahawa kedua-dua jadual yang akan disertai berada dalam pangkalan data fizikal yang sama. Middleware secara amnya tidak menyokong gabungan silang pangkalan data dengan baik.
Untuk memberikan contoh perniagaan yang sangat biasa, dalam sub-pangkalan data dan sub-jadual, dua jadual perlu dikemas kini secara serentak Kedua-dua jadual terletak di perpustakaan fizikal yang berbeza untuk memastikan konsistensi data, satu Caranya adalah dengan menggunakan Perisian tengah transaksi yang diedarkan meletakkan dua operasi kemas kini ke dalam satu transaksi, tetapi operasi sedemikian secara amnya memerlukan kunci global, yang mengakibatkan prestasi yang lemah Walau bagaimanapun, sesetengah perniagaan boleh bertolak ansur dengan ketidakkonsistenan data jangka pendek. Biarkan mereka dikemas kini secara berasingan, tetapi akan ada masalah kegagalan penulisan data, kemudian mulakan tugas yang dijadualkan, imbas jadual A untuk baris yang gagal, dan kemudian lihat jika jadual B juga berjaya ditulis, dan kemudian pasangkan kedua-dua persatuan. Semasa menyemak rekod, adalah mustahil untuk menggunakan gabungan untuk melaksanakannya. Data hanya boleh ditarik ke lapisan perkhidmatan dan aplikasi itu sendiri menggabungkannya. . .
Malah, membina semula pertanyaan dengan menguraikan pertanyaan yang berkaitan mempunyai kelebihan berikut:Menjadikan caching lebih cekap.
Banyak aplikasi boleh cache objek hasil yang sepadan dengan pertanyaan jadual tunggal dengan mudah. Di samping itu, untuk cache pertanyaan MySQL, jika jadual dalam persatuan berubah, cache pertanyaan tidak boleh digunakan Selepas pemisahan, jika jadual jarang berubah, pertanyaan berdasarkan jadual boleh diulang.
Selepas memecahkan pertanyaan, melaksanakan satu pertanyaan boleh mengurangkan perbalahan kunci.
Membuat perkaitan pada lapisan aplikasi memudahkan pembahagian pangkalan data dan mencapai prestasi tinggi serta kebolehskalaan.
Kecekapan pertanyaan itu sendiri juga mungkin dipertingkatkan
Pertanyaan yang boleh mengurangkan rekod berlebihan.
Selain itu, ini adalah bersamaan dengan melaksanakan perkaitan cincang dalam aplikasi dan bukannya menggunakan perkaitan cincin bersarang MySQL Dalam sesetengah senario, perkaitan cincang adalah lebih cekap.
Pernyataan pertanyaan bergabung, hidup, di mana urutan pelaksanaan
Jujukan pelaksanaan MySQL
1 Urutan pelaksanaan lengkap pernyataan SELECT biasa
1) dari. sub Ayat mengumpulkan data daripada sumber data yang berbeza;
2) Gunakan pada untuk menapis data untuk menyambung sambungan
3) Di mana klausa menyaring baris berdasarkan syarat yang ditetapkan; ) Kumpulan mengikut klausa membahagikan data kepada berbilang kumpulan;
5) kubus, gulung
6) Gunakan fungsi agregat untuk pengiraan; pengumpulan;
8) Kira semua ungkapan;
9) Kira medan pilihan; untuk mengisih set keputusan.
12) Pilih data TOPN
2. daripada
Jika perkaitan adalah daripada jadualA, jadualB, kedua-dua jadual ini akan disusun dahulu untuk produk Cartesian, dan kemudian Lakukan operasi berikut seperti di mana dan kumpulan mengikut.
3. pada
Jika anda menggunakan sambung kiri, sambung dalam atau sambung penuh luar, gunakan pada untuk menapis syarat dan kemudian serta.
Lihat 2 sql berikut dan hasil. Perbezaan antara keduanya terletak pada kedudukan selepas penyataan on dan where. Mula-mula gunakan pada untuk penapisan bersyarat, kemudian lakukan operasi gabungan, dan kemudian gunakan di tempat penapisan bersyarat.
Gunakan join untuk menyambung dahulu, dan kemudian gunakan pada untuk menapis, yang akan membentuk produk Cartesian. Tiada perbezaan antara sambung kiri dan sambung langsung. Jadi anda mesti menapis terlebih dahulu dengan syarat dan kemudian menyertai.
Jika operasi JOIN dilakukan selepas WHERE dan ke atas ON, hasil dua pertanyaan SQL berikut hendaklah sama. Ia boleh dilihat bahawa di mana penapisan untuk set selepas bergabung.
Ringkasnya: mula-mula lakukan pada penapisan syarat, kemudian sertai, dan akhirnya lakukan di mana penapisanSELECT DISTINCT a.domain , b.domain FROM mal_nxdomains_raw a LEFT JOIN mal_nxdomains_detail b ON a.domain = b.domain AND b.date = ‘20160403' WHERE a.date = ‘20160403'
SELECT DISTINCT a.domain , b.domain FROM mal_nxdomains_raw a LEFT JOIN mal_nxdomains_detail b ON a.domain = b.domain #and b.date = ‘20160403' WHERE a.date = ‘20160403' AND b.date = ‘20160403'
四、on 条件与where 条件
1、使用位置
on 条件位置在join后面
where 条件在join 与on完成的后面
2、使用对象
on 的使用对象是被关联表
where的使用对象可以是主表,也可以是关联表
3、选择与使用
主表条件筛选:只能在where后面使用。
被关联表,如果是想缩小join范围,可以放置到on后面。如果是关联后再查询,可以放置到where 后面。
如果left join 中,where条件有对被关联表的 关联字段的 非空查询,与使用inner join的效果后,在进行where 筛选的效果是一样的。不能起到left join的作用。
五、join 流程
在表A和表B的联接中,从A表中选出一条记录,并将其传递到B表进行扫描和匹配。所以A的行数决定查询次数,B表的行数决定扫描范围。需要运行100次从A表中取出一条数据,然后进行200次比对,将结果存储到B表中。
相对来说从A表取数据消耗的资源比较多。所以尽量tableA选择比较小的表。同时缩小B表的查询范围。
但是实际应用中,因为二者返回的数据结果不同,使用的索引也不同,导致条件放置在on 和 where 效率是不一定谁更好。要根据需求来确定。
Atas ialah kandungan terperinci Apakah pertanyaan menyertai mysql dan kaedah pertanyaan berbilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Perbezaan utama antara MySQL dan SQLite adalah konsep reka bentuk dan senario penggunaan: 1. MySQL sesuai untuk aplikasi besar dan penyelesaian peringkat perusahaan, menyokong prestasi tinggi dan kesesuaian yang tinggi; 2. SQLITE sesuai untuk aplikasi mudah alih dan perisian desktop, ringan dan mudah dibenamkan.

Indeks dalam MySQL adalah struktur yang diperintahkan satu atau lebih lajur dalam jadual pangkalan data, yang digunakan untuk mempercepat pengambilan data. 1) Indeks meningkatkan kelajuan pertanyaan dengan mengurangkan jumlah data yang diimbas. 2) Indeks B-Tree menggunakan struktur pokok yang seimbang, yang sesuai untuk pertanyaan dan penyortiran pelbagai. 3) Gunakan pernyataan createIndex untuk membuat indeks, seperti createIndexidx_customer_idonorders (customer_id). 4) Indeks komposit boleh mengoptimumkan pertanyaan berbilang lajur, seperti createIndexidx_customer_orderonorders (customer_id, order_date). 5) Gunakan Jelaskan untuk menganalisis rancangan pertanyaan dan elakkan

Menggunakan transaksi dalam MySQL memastikan konsistensi data. 1) Mulakan transaksi melalui starttransaction, dan kemudian laksanakan operasi SQL dan serahkannya dengan komit atau rollback. 2) Gunakan SavePoint untuk menetapkan titik simpan untuk membolehkan rollback separa. 3) Cadangan Pengoptimuman Prestasi termasuk memendekkan masa urus niaga, mengelakkan pertanyaan berskala besar dan menggunakan tahap pengasingan yang munasabah.

Senario di mana PostgreSQL dipilih dan bukannya MySQL termasuk: 1) Pertanyaan Kompleks dan Fungsi SQL Lanjutan, 2) Integriti Data yang ketat dan Pematuhan Asid, 3) Fungsi Spatial Advanced diperlukan, dan 4) Prestasi tinggi diperlukan apabila memproses set data yang besar. PostgreSQL berfungsi dengan baik dalam aspek -aspek ini dan sesuai untuk projek -projek yang memerlukan pemprosesan data yang kompleks dan integriti data yang tinggi.

Keselamatan pangkalan data MySQL dapat dicapai melalui langkah -langkah berikut: 1. 2. Transmisi yang disulitkan: Konfigurasi SSL/TLS untuk memastikan keselamatan penghantaran data. 3. Backup dan Pemulihan Pangkalan Data: Gunakan MySQLDUMP atau MySQLPUMP untuk data sandaran secara kerap. 4. Dasar Keselamatan Lanjutan: Gunakan firewall untuk menyekat akses dan membolehkan operasi pembalakan audit. 5. Pengoptimuman Prestasi dan Amalan Terbaik: Mengambil kira kedua -dua keselamatan dan prestasi melalui pengindeksan dan pengoptimuman pertanyaan dan penyelenggaraan tetap.

Bagaimana untuk memantau prestasi MySQL dengan berkesan? Gunakan alat seperti mysqladmin, showglobalstatus, perconamonitoring dan pengurusan (PMM), dan mysql enterprisemonitor. 1. Gunakan mysqladmin untuk melihat bilangan sambungan. 2. Gunakan showglobalstatus untuk melihat nombor pertanyaan. 3.Pmm menyediakan data prestasi terperinci dan antara muka grafik. 4.MySqLenterPrisemonitor menyediakan fungsi pemantauan yang kaya dan mekanisme penggera.

Perbezaan antara MySQL dan SQLServer adalah: 1) MySQL adalah sumber terbuka dan sesuai untuk sistem web dan tertanam, 2) SQLServer adalah produk komersil Microsoft dan sesuai untuk aplikasi peringkat perusahaan. Terdapat perbezaan yang signifikan antara kedua -dua enjin penyimpanan, pengoptimuman prestasi dan senario aplikasi. Apabila memilih, anda perlu mempertimbangkan saiz projek dan skalabiliti masa depan.

Dalam senario aplikasi peringkat perusahaan yang memerlukan ketersediaan yang tinggi, keselamatan maju dan integrasi yang baik, SQLServer harus dipilih bukannya MySQL. 1) SQLServer menyediakan ciri peringkat perusahaan seperti ketersediaan tinggi dan keselamatan maju. 2) Ia bersepadu dengan ekosistem Microsoft seperti VisualStudio dan PowerBI. 3) SQLServer melakukan pengoptimuman prestasi yang sangat baik dan menyokong jadual yang dioptimumkan memori dan indeks penyimpanan lajur.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Dreamweaver Mac版
Alat pembangunan web visual

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.
