Rumah pangkalan data tutorial mysql Mysq的一些​常见误区

Mysq的一些​常见误区

Jun 20, 2017 pm 03:37 PM
Pangkalan

常见误区

    1. count(1)和count(primary_key) 优于 count(*)

    很多人为了统计记录条数,就使用 count(1) 和 count(primary_key) 而不是 count(*) ,他们认为这样性能更好,其实这是一个误区。对于有些场景,这样做可能性能会更差,应为数据库对 count(*) 计数操作做了一些特别的优化。
      1. count(column) 和 count(*) 是一样的

      这个误区甚至在很多的资深工程师或者是 DBA 中都普遍存在,很多人都会认为这是理所当然的。实际上,count(column) 和 count(*) 是一个完全不一样的操作,所代表的意义也完全不一样。
      count(column) 是表示结果集中有多少个column字段不为空的记录
      count(*) 是表示整个结果集有多少条记录
        1. select a,b from … 比 select a,b,c from … 可以让数据库访问更少的数据量

        这个误区主要存在于大量的开发人员中,主要原因是对数据库的存储原理不是太了解。
        实际上,大多数关系型数据库都是按照行(row)的方式存储,而数据存取操作都是以一个固定大小的IO单元(被称作 block 或者 page)为单位,一般为4KB,8KB… 大多数时候,每个IO单元中存储了多行,每行都是存储了该行的所有字段(lob等特殊类型字段除外)。
        所以,我们是取一个字段还是多个字段,实际上数据库在表中需要访问的数据量其实是一样的。
        当然,也有例外情况,那就是我们的这个查询在索引中就可以完成,也就是说当只取 a,b两个字段的时候,不需要回表,而c这个字段不在使用的索引中,需要回表取得其数据。在这样的情况下,二者的IO量会有较大差异。
          1. order by 一定需要排序操作

          我们知道索引数据实际上是有序的,如果我们的需要的数据和某个索引的顺序一致,而且我们的查询又通过这个索引来执行,那么数据库一般会省略排序操作,而直接将数据返回,因为数据库知道数据已经满足我们的排序需求了。
          实际上,利用索引来优化有排序需求的 SQL,是一个非常重要的优化手段
          延伸阅读:MySQL ORDER BY 的实现分析 ,MySQL 中 GROUP BY 基本实现原理 以及 MySQL DISTINCT 的基本实现原理 这3篇文章中有更为深入的分析,尤其是第一篇
            1. 执行计划中有 filesort 就会进行磁盘文件排序

            有这个误区其实并不能怪我们,而是因为 MySQL 开发者在用词方面的问题。filesort 是我们在使用 explain 命令查看一条 SQL 的执行计划的时候可能会看到在 “Extra” 一列显示的信息。
            实际上,只要一条 SQL 语句需要进行排序操作,都会显示“Using filesort”,这并不表示就会有文件排序操作。
            延伸阅读:理解 MySQL Explain 命令输出中的filesort,我在这里有更为详细的介绍
            • 基本原则

              1. 尽量少 join

              MySQL 的优势在于简单,但这在某些方面其实也是其劣势。MySQL 优化器效率高,但是由于其统计信息的量有限,优化器工作过程出现偏差的可能性也就更多。对于复杂的多表 Join,一方面由于其优化器受限,再者在 Join 这方面所下的功夫还不够,所以性能表现离 Oracle 等关系型数据库前辈还是有一定距离。但如果是简单的单表查询,这一差距就会极小甚至在有些场景下要优于这些数据库前辈。
                1. 尽量少排序

                排序操作会消耗较多的 CPU 资源,所以减少排序可以在缓存命中率高等 IO 能力足够的场景下会较大影响 SQL 的响应时间。
                对于MySQL来说,减少排序有多种办法,比如:
                • 上面误区中提到的通过利用索引来排序的方式进行优化

                • 减少参与排序的记录条数

                • 非必要不对数据进行排序

                • 避免使用耗费资源的操作,带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎 执行,耗费资源的排序(SORT)功能. DISTINCT需要一次排序操作, 而其他的至少需要执行两次排序

                 

                Atas ialah kandungan terperinci Mysq的一些​常见误区. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

                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)
                3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
                R.E.P.O. Tetapan grafik terbaik
                3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
                R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
                3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
                WWE 2K25: Cara Membuka Segala -galanya Di Myrise
                4 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)

                Tutorial Asas PHP: Dari Pemula hingga Master Tutorial Asas PHP: Dari Pemula hingga Master Jun 18, 2023 am 09:43 AM

                PHP ialah bahasa skrip sebelah pelayan sumber terbuka yang digunakan secara meluas yang boleh mengendalikan semua tugas dalam pembangunan web. PHP digunakan secara meluas dalam pembangunan web, terutamanya untuk prestasi cemerlangnya dalam pemprosesan data dinamik, jadi ia disukai dan digunakan oleh ramai pembangun. Dalam artikel ini, kami akan menerangkan asas PHP langkah demi langkah untuk membantu pemula daripada mula menjadi mahir. 1. Sintaks asas PHP ialah bahasa yang ditafsirkan yang kodnya serupa dengan HTML, CSS dan JavaScript. Setiap penyata PHP berakhir dengan koma bertitik;

                Bolehkah saya belajar Linux dari awal Apakah yang perlu saya pelajari? Bolehkah saya belajar Linux dari awal Apakah yang perlu saya pelajari? Feb 19, 2024 pm 12:57 PM

                Jika anda ingin bekerja dalam industri IT, tetapi adakah anda ingin belajar pengaturcaraan, teknologi mana yang harus anda pilih? Sudah tentu ia adalah operasi dan penyelenggaraan Linux. Linux ialah teknologi yang sangat popular di pasaran, dengan pelbagai aplikasi dan prospek pekerjaan yang baik, dan disukai oleh ramai orang. Jadi persoalannya, bolehkah saya mempelajari operasi dan penyelenggaraan Linux dengan pengetahuan asas sifar Dalam pasaran pelayan, sistem Linux mempunyai bahagian pasaran sehingga 80% kerana kelebihannya seperti kestabilan, keselamatan, sumber terbuka percuma, kecekapan dan kemudahan? . Daripada ini, dapat dilihat bahawa aplikasi Linux sangat popular. Sama ada sekarang atau pada masa hadapan, mempelajari Linux adalah pilihan yang sangat baik. Sama ada boleh belajar dari awal? Kelas bersemuka Oldboy Education Linux direka khas untuk orang yang tidak mempunyai pengetahuan asas

                Ketahui asas pembolehubah bahasa Go Ketahui asas pembolehubah bahasa Go Mar 22, 2024 pm 09:39 PM

                Bahasa Go ialah bahasa yang disusun secara statik yang dibangunkan oleh Google Cirinya yang ringkas dan cekap telah menarik perhatian dan kasih sayang yang meluas daripada pembangun. Dalam proses pembelajaran bahasa Go, menguasai pengetahuan asas pembolehubah adalah langkah yang penting. Artikel ini akan menerangkan pengetahuan asas seperti definisi, tugasan dan inferens jenis pembolehubah dalam bahasa Go melalui contoh kod khusus untuk membantu pembaca lebih memahami dan menguasai mata pengetahuan ini. Dalam bahasa Go, anda boleh menggunakan kata kunci var untuk menentukan pembolehubah, iaitu format nama pembolehubah var dan jenis pembolehubah.

                Pengenalan kepada Asas PHP: Cara menggunakan fungsi gema untuk mengeluarkan kandungan teks Pengenalan kepada Asas PHP: Cara menggunakan fungsi gema untuk mengeluarkan kandungan teks Jul 30, 2023 pm 05:38 PM

                Pengenalan asas kepada PHP: Cara menggunakan fungsi gema untuk mengeluarkan kandungan teks Dalam pengaturcaraan PHP, anda selalunya perlu mengeluarkan beberapa kandungan teks ke halaman web Dalam kes ini, anda boleh menggunakan fungsi gema. Artikel ini akan memperkenalkan cara menggunakan fungsi gema untuk mengeluarkan kandungan teks dan menyediakan beberapa kod sampel. Sebelum memulakan, pastikan anda telah memasang PHP dan mengkonfigurasi persekitaran berjalan. Jika PHP belum dipasang, anda boleh memuat turun versi stabil terkini dari laman web rasmi PHP (https://www.php.net).

                Penjelasan terperinci tentang fungsi bahasa C: analisis asas kepada lanjutan yang komprehensif tentang penggunaan fungsi Penjelasan terperinci tentang fungsi bahasa C: analisis asas kepada lanjutan yang komprehensif tentang penggunaan fungsi Feb 18, 2024 pm 02:25 PM

                Ensiklopedia fungsi bahasa C: daripada asas kepada lanjutan, penerangan terperinci tentang cara menggunakan fungsi, contoh kod khusus diperlukan Pengenalan: Bahasa C ialah bahasa pengaturcaraan yang digunakan secara meluas, dan fungsi dan fleksibilitinya yang berkuasa menjadikannya pilihan pertama banyak pembangun. Dalam bahasa C, fungsi ialah konsep penting Ia boleh menggabungkan sekeping kod ke dalam modul bebas, meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod. Artikel ini akan memperkenalkan penggunaan fungsi bahasa C dari asas dan secara beransur-ansur maju untuk membantu pembaca menguasai kemahiran menulis fungsi. 1. Definisi dan panggilan fungsi dalam C

                Nota kajian PHP: Asas pengaturcaraan berorientasikan objek Nota kajian PHP: Asas pengaturcaraan berorientasikan objek Oct 09, 2023 pm 12:46 PM

                Nota kajian PHP: Asas pengaturcaraan berorientasikan objek, contoh kod khusus diperlukan Pengenalan: Pengaturcaraan Berorientasikan Objek (pendek kata OOP) ialah cara pemikiran pengaturcaraan yang menguraikan masalah kepada berbilang objek dan mentakrifkan interaksi antara objek untuk menyelesaikan kompleks masalah pengaturcaraan. Sebagai bahasa pengaturcaraan yang berkuasa, PHP juga menyokong pengaturcaraan berorientasikan objek. Artikel ini akan memperkenalkan konsep asas dan sintaks biasa pengaturcaraan berorientasikan objek dalam PHP, dan menyediakan contoh kod khusus. baik hati

                Penggunaan fungsi PHP: daripada asas kepada lanjutan Penggunaan fungsi PHP: daripada asas kepada lanjutan Jun 15, 2023 pm 11:11 PM

                PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas untuk membangunkan laman web dinamik, aplikasi web dan perkhidmatan Internet yang lain. Dalam proses membangunkan aplikasi PHP, menggunakan fungsi boleh membantu memudahkan kod, meningkatkan kebolehgunaan semula kod dan mengurangkan kos pembangunan. Artikel ini akan memperkenalkan penggunaan asas dan penggunaan lanjutan fungsi PHP. 1. Penggunaan asas fungsi PHP 1. Tentukan fungsi Dalam PHP, gunakan kata kunci fungsi untuk mentakrifkan fungsi, contohnya: functiongreet($name){

                Jangan lepaskan peluang anda untuk mendapatkan pensijilan Basic C# percuma anda sekarang daripada Microsoft Jangan lepaskan peluang anda untuk mendapatkan pensijilan Basic C# percuma anda sekarang daripada Microsoft Sep 01, 2023 pm 12:45 PM

                Memanggil semua pembangun C#! Microsoft dan organisasi bukan untung freeCodeCamp mengumumkan pelancaran pensijilan Asas C# percuma global baharu. Pensijilan ini direka bentuk untuk membantu pembangun dari semua peringkat mempelajari asas C#, bahasa pengaturcaraan popular yang digunakan untuk mencipta pelbagai aplikasi dan anda boleh memaparkannya dalam profil LinkedIn anda. Pensijilan ini termasuk 35 jam kursus latihan Microsoft Learn dan peperiksaan 80 soalan yang dihoskan di freeCodeCamp. Kursus ini merangkumi topik seperti pembolehubah, jenis data, struktur kawalan, dan pengaturcaraan berorientasikan objek. “Pensijilan C# Asas kami menyediakan perkara itu – bukti keupayaan anda untuk menguasai serba boleh ini

                See all articles