데이터 베이스 MySQL 튜토리얼 Mysq에 대한 몇 가지 일반적인 오해

Mysq에 대한 몇 가지 일반적인 오해

Jun 20, 2017 pm 03:37 PM
베이스

일반적인 오해

    1. count(1)와 count(primary_key)가 count(*)보다 낫습니다

    많은 사람들이 숫자를 세는 데 count 대신 count(1)과 count(primary_key)를 사용합니다. (*), 그들은 이것이 더 나은 성능을 발휘한다고 생각하지만 실제로는 오해입니다. 일부 시나리오에서는 데이터베이스가 count(*) 계산 작업에 대해 특별한 최적화를 수행했기 때문에 이로 인해 성능이 저하될 수 있습니다.
      1. count(열)과 count(*)는 동일합니다

      이러한 오해는 많은 수석 엔지니어나 DBA 사이에서도 흔히 발생하며, 많은 사람들이 이를 당연하게 여깁니다. 사실 count(column)와 count(*)는 전혀 다른 연산이고, 전혀 다른 의미를 갖고 있습니다.
      count(column)는 열 필드가 비어 있지 않은 결과 집합의 레코드 수를 의미합니다.
      count(*)는 전체 결과 집합에 있는 레코드 수를 의미합니다.
        1. select a,b from ...은 a,b,c from...을 선택하는 것보다 낫습니다. 데이터베이스가 더 적은 양의 데이터에 액세스할 수 있도록 허용할 수 있습니다

        이러한 오해는 주로 많은 개발자들 사이에 존재합니다. 데이터베이스의 저장 원리에 대해 많이 설명합니다.
        실제로 대부분의 관계형 데이터베이스는 행에 저장되며, 데이터 액세스 작업은 일반적으로 4KB인 고정 크기 IO 단위(블록 또는 페이지라고 함)를 기반으로 합니다. 대부분의 경우 여러 행이 저장됩니다. 각 IO 유닛과 각 행은 해당 행의 모든 ​​필드를 저장합니다(lob과 같은 특수 유형 필드 제외).
        따라서 하나의 필드를 사용하든 여러 필드를 사용하든 데이터베이스가 테이블에서 액세스해야 하는 데이터의 양은 실제로 동일합니다.
        물론 예외가 있습니다. 즉, 쿼리는 인덱스에서 완료될 수 있습니다. 즉, 두 개의 필드 a와 b만 가져온 경우 테이블을 반환할 필요가 없으며 필드 c는 다음과 같습니다. 사용된 인덱스에 없습니다. 해당 데이터를 얻으려면 테이블로 돌아가야 합니다. 이 경우 둘 사이의 IO 볼륨은 상당히 다릅니다.
          1. order by에는 정렬 작업이 필요합니다.

          필요한 데이터가 인덱스와 동일한 순서이고 쿼리가 실행되면 이 인덱스를 통과하는 경우 인덱스 데이터가 실제로 정렬된다는 것을 알고 있습니다. , 데이터베이스는 일반적으로 정렬 작업을 생략하고 데이터를 직접 반환합니다. 왜냐하면 데이터베이스는 데이터가 이미 정렬 요구 사항을 충족한다는 것을 알고 있기 때문입니다.
          실제로 정렬 요구 사항을 갖춘 SQL을 최적화하기 위해 인덱스를 사용하는 것은 매우 중요한 최적화 방법입니다
          확장 읽기: MySQL ORDER BY 구현 분석, MySQL의 GROUP BY 기본 구현 원리, MySQL의 기본 구현 원리 DISTINCT This 3 이번 글에는 좀 더 심층적인 분석이 있는데, 특히 첫 번째 글에는
            1. filesort가 실행 계획에 포함되면 디스크 파일이 정렬됩니다

            사실 이런 오해는 우리 잘못은 아니지만 MySQL 개발 때문에 저자는 표현에 문제가 있습니다. filesort는 explain 명령을 사용하여 SQL 문의 실행 계획을 볼 때 "Extra" 열에 표시되는 정보입니다.
            실제로 SQL 문에 정렬 작업이 필요할 때마다 "Using filesort"가 표시되지만 이는 파일 정렬 작업이 있다는 의미는 아닙니다.
            더 읽어보기: MySQL explain 명령 출력의 파일 정렬 이해, 여기에 더 자세한 소개가 있습니다
            • 기본 원칙

              1. 가능한 적은 수의 조인

              MySQL의 장점은 단순성입니다. , 그러나 이것은 실제로 어떤 측면에서는 단점입니다. MySQL 옵티마이저는 매우 효율적이지만 제한된 통계 정보로 인해 옵티마이저의 작업 프로세스에서 편차가 발생할 가능성이 더 큽니다. 복잡한 다중 테이블 Join의 경우 제한된 최적화로 인해 Join에 대한 노력이 부족하여 Oracle과 같은 이전 관계형 데이터베이스에 비해 성능이 여전히 크게 뒤떨어집니다. 그러나 단순한 단일 테이블 쿼리인 경우 일부 시나리오에서는 이 격차가 매우 작으며 이전 데이터베이스보다 훨씬 더 좋습니다.
                1. 가능한 한 적게 정렬

                정렬 작업은 더 많은 CPU 리소스를 소비하므로 정렬을 줄이면 캐시 적중률이 높고 IO 기능이 충분한 시나리오에서 SQL의 응답 시간에 큰 영향을 미칠 수 있습니다.
                MySQL의 경우 다음과 같이 정렬을 줄이는 방법이 많이 있습니다.
                • 인덱스를 사용하여 정렬하여 위의 오해를 최적화

                • 정렬에 참여하는 레코드 수를 줄입니다.

                • 필요한 경우가 아니면 데이터를 정렬하지 마세요

                • 리소스를 소모하는 작업, DISTINCT가 포함된 SQL 문 사용을 피하세요. UNION, MINUS, INTERSECT, ORDER BY는 리소스 소비 정렬(SORT) 기능을 실행하기 위해 SQL 엔진을 시작합니다. DISTINCT에는 한 번의 정렬 작업이 필요하지만 다른 경우에는 적어도 두 번의 정렬 작업이 필요합니다

                위 내용은 Mysq에 대한 몇 가지 일반적인 오해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

                본 웹사이트의 성명
                본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

                핫 AI 도구

                Undresser.AI Undress

                Undresser.AI Undress

                사실적인 누드 사진을 만들기 위한 AI 기반 앱

                AI Clothes Remover

                AI Clothes Remover

                사진에서 옷을 제거하는 온라인 AI 도구입니다.

                Undress AI Tool

                Undress AI Tool

                무료로 이미지를 벗다

                Clothoff.io

                Clothoff.io

                AI 옷 제거제

                AI Hentai Generator

                AI Hentai Generator

                AI Hentai를 무료로 생성하십시오.

                인기 기사

                R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
                3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
                R.E.P.O. 최고의 그래픽 설정
                3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
                R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
                3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
                WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
                4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

                뜨거운 도구

                메모장++7.3.1

                메모장++7.3.1

                사용하기 쉬운 무료 코드 편집기

                SublimeText3 중국어 버전

                SublimeText3 중국어 버전

                중국어 버전, 사용하기 매우 쉽습니다.

                스튜디오 13.0.1 보내기

                스튜디오 13.0.1 보내기

                강력한 PHP 통합 개발 환경

                드림위버 CS6

                드림위버 CS6

                시각적 웹 개발 도구

                SublimeText3 Mac 버전

                SublimeText3 Mac 버전

                신 수준의 코드 편집 소프트웨어(SublimeText3)

                PHP 기본 튜토리얼: 초보자부터 마스터까지 PHP 기본 튜토리얼: 초보자부터 마스터까지 Jun 18, 2023 am 09:43 AM

                PHP는 웹 개발의 모든 작업을 처리할 수 있는 널리 사용되는 오픈 소스 서버 측 스크립팅 언어입니다. PHP는 웹 개발에 널리 사용되며, 특히 동적 데이터 처리에 뛰어난 성능을 발휘하여 많은 개발자들에게 사랑받고 사용되고 있습니다. 이 기사에서는 초보자가 시작부터 능숙해질 수 있도록 PHP의 기본 사항을 단계별로 설명합니다. 1. 기본 구문 PHP는 코드가 HTML, CSS 및 JavaScript와 유사한 해석 언어입니다. 모든 PHP 문은 세미콜론으로 끝납니다.

                Go 언어 변수의 기본 사항을 알아보세요. Go 언어 변수의 기본 사항을 알아보세요. Mar 22, 2024 pm 09:39 PM

                Go 언어는 Google이 개발한 정적으로 유형이 지정되고 컴파일되는 언어로, 간결하고 효율적인 기능으로 인해 개발자들의 광범위한 관심과 사랑을 받았습니다. Go 언어를 학습하는 과정에서 변수에 대한 기본 지식을 익히는 것은 중요한 단계입니다. 이 글에서는 Go 언어의 변수 정의, 할당, 유형 추론 등의 기본 지식을 구체적인 코드 예제를 통해 설명하여 독자가 이러한 지식 포인트를 더 잘 이해하고 숙달할 수 있도록 돕습니다. Go 언어에서는 var 키워드를 사용하여 var 변수 이름 변수 유형의 형식인 변수를 정의할 수 있습니다.

                Linux를 처음부터 배울 수 있나요? 무엇을 배워야 합니까? Linux를 처음부터 배울 수 있나요? 무엇을 배워야 합니까? Feb 19, 2024 pm 12:57 PM

                IT업계에 취업하고 싶지만 프로그래밍을 배우고 싶다면 어떤 기술을 선택해야 할까요? 당연히 리눅스 운영과 유지보수겠죠? Linux는 광범위한 응용 프로그램과 좋은 고용 전망을 제공하여 시장에서 매우 인기 있는 기술이며 많은 사람들이 선호합니다. 그렇다면 질문은, 기본 지식 없이도 리눅스 운영과 유지 관리를 배울 수 있느냐는 것입니다. 서버 시장에서 리눅스 시스템은 안정성, 보안성, 무료 오픈 소스, 효율성, 편의성 등의 장점으로 인해 최대 80%의 시장 점유율을 차지하고 있습니다. . 이것으로부터 Linux 애플리케이션이 매우 널리 사용된다는 것을 알 수 있습니다. 지금이든 미래이든 Linux를 배우는 것은 매우 좋은 선택입니다. 처음부터 배울 수 있는지에 대해서는 당연히 내 대답은 다음과 같습니다. 올드보이 교육 리눅스 대면 수업은 기초 지식이 전혀 없는 사람들을 위해 특별히 고안되었습니다.

                PHP 기본 소개: 에코 함수를 사용하여 텍스트 내용을 출력하는 방법 PHP 기본 소개: 에코 함수를 사용하여 텍스트 내용을 출력하는 방법 Jul 30, 2023 pm 05:38 PM

                PHP 기본 소개: 에코 함수를 사용하여 텍스트 내용을 출력하는 방법 PHP 프로그래밍에서는 일부 텍스트 내용을 웹 페이지에 출력해야 하는 경우가 많습니다. 이 기사에서는 echo 함수를 사용하여 텍스트 콘텐츠를 출력하는 방법을 소개하고 일부 샘플 코드를 제공합니다. 시작하기 전에 먼저 PHP를 설치하고 실행 환경을 구성했는지 확인하세요. 아직 PHP가 설치되지 않은 경우, PHP 공식 홈페이지(https://www.php.net)에서 최신 안정 버전을 다운로드 받으실 수 있습니다.

                C언어의 기능에 대한 상세한 설명 : 기초부터 고급까지, 기능의 활용에 대한 종합적인 분석 C언어의 기능에 대한 상세한 설명 : 기초부터 고급까지, 기능의 활용에 대한 종합적인 분석 Feb 18, 2024 pm 02:25 PM

                C 언어 함수 백과사전: 기본부터 고급까지, 함수 사용 방법에 대한 자세한 설명, 구체적인 코드 예제가 필요합니다. 소개: C 언어는 널리 사용되는 프로그래밍 언어이며 강력한 기능과 유연성으로 인해 많은 개발자가 첫 번째로 선택합니다. C 언어에서 함수는 코드 조각을 독립적인 모듈로 결합하여 코드의 재사용성과 유지 관리성을 향상시키는 중요한 개념입니다. 이 글에서는 C 언어 함수의 사용법을 기초부터 소개하고 점차적으로 발전시켜 독자들이 함수 작성 기술을 익히는 데 도움을 줄 것입니다. 1. C에서 함수 정의 및 호출

                PHP 연구 노트: 객체 지향 프로그래밍의 기초 PHP 연구 노트: 객체 지향 프로그래밍의 기초 Oct 09, 2023 pm 12:46 PM

                PHP 학습 노트: 객체 지향 프로그래밍의 기본, 특정 코드 예제가 필요합니다. 소개: 객체 지향 프로그래밍(OOP)은 문제를 여러 객체로 분해하고 객체 간의 상호 작용을 정의하여 복잡한 문제를 해결하는 프로그래밍 사고 방식입니다. 프로그래밍 문제. 강력한 프로그래밍 언어인 PHP는 객체 지향 프로그래밍도 지원합니다. 이 기사에서는 PHP의 객체 지향 프로그래밍의 기본 개념과 일반적인 구문을 소개하고 구체적인 코드 예제를 제공합니다. 친절한

                PHP 함수 사용법: 기초부터 고급까지 PHP 함수 사용법: 기초부터 고급까지 Jun 15, 2023 pm 11:11 PM

                PHP는 동적 웹사이트, 웹 애플리케이션 및 기타 인터넷 서비스를 개발하는 데 널리 사용되는 서버측 스크립팅 언어입니다. PHP 애플리케이션을 개발하는 과정에서 함수를 사용하면 코드를 단순화하고 코드 재사용성을 향상시키며 개발 비용을 줄이는 데 도움이 될 수 있습니다. 이 글에서는 PHP 함수의 기본 사용법과 고급 사용법을 소개합니다. 1. PHP 함수의 기본 사용법 1. 함수 정의 PHP에서는 function 키워드를 사용하여 함수를 정의합니다. 예: functiongreet($name){

                절대 위치 지정과 관련된 참조 방법 절대 위치 지정과 관련된 참조 방법 Jan 23, 2024 am 09:18 AM

                절대 위치 지정은 CSS에서 일반적으로 사용되는 위치 지정 방법 중 하나입니다. 이는 가장 가까운 "위치 지정" 상위 요소를 기준으로 요소의 오프셋 위치를 지정하여 페이지에서 요소의 위치를 ​​제어합니다. 이 기사에서는 절대 위치 지정의 기본 개념을 소개하고 독자가 이 참조 방법을 더 잘 이해하고 적용할 수 있도록 구체적인 코드 예제를 제공합니다. 절대 위치 지정은 요소의 위치 속성을 절대값으로 설정하여 달성됩니다. 요소가 절대 위치로 설정되면 위쪽, 아래쪽, 왼쪽, r을 설정할 수 있습니다.

                See all articles