데이터 베이스 MySQL 튜토리얼 MySQL 인덱스 사용예 분석_MySQL

MySQL 인덱스 사용예 분석_MySQL

Aug 20, 2016 am 08:48 AM
mysql 색인

이 글은 MySQL 인덱스의 사용법을 예시를 통해 분석한 것입니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

MYSQL 설명:

카테고리와 기사라는 두 개의 테이블이 있는 기사 라이브러리입니다. 카테고리에는 10개의 분류된 데이터가 있습니다. 기사에 200,000개의 항목이 있습니다. 카테고리의 "category_id" 필드에 해당하는 기사의 "article_category" 필드가 있습니다. 기사_카테고리라는 단어가 기사 테이블의 색인으로 정의되었습니다. 데이터베이스 크기는 1.3G입니다.

문제 설명:

매우 일반적인 쿼리 실행:

코드는 다음과 같습니다.

SELECT * FROM `article` WHERE Article_category=11 ORDER BY Article_id DESC LIMIT 5

실행 시간은 약 5초입니다

해결책:

색인 생성:

코드는 다음과 같습니다.

기사(article_category,article_id)에 대해 색인 idx_u를 생성합니다.


코드는 다음과 같습니다.

SELECT * FROM `article` WHERE Article_category=11 ORDER BY Article_id DESC LIMIT 5

0.0027초로 단축

질문 계속하기:

코드는 다음과 같습니다.

SELECT * FROM `article` WHERE Article_category IN (2,3) ORDER BY Article_id DESC LIMIT 5

실행 시간은 11.2850초입니다.

또는 사용:

select * from article
where article_category=2
or article_category=3
order by article_id desc
limit 5

로그인 후 복사

실행 시간: 11.0777

해결책: in 또는 or를 사용하지 말고(또는 테이블 스캔을 유발함) Union all을 사용하세요

UNION ALL 사용:

(select * from article where article_category=2 order by article_id desc limit 5)
UNION ALL (select * from article where article_category=3 order by article_id desc limit 5)
ORDER BY article_id desc
limit 5

로그인 후 복사

실행 시간: 0.0261

참고: UNION과 UNION ALL의 차이점

데이터베이스에서 UNION 및 UNION ALL 키워드는 모두 두 개의 결과 세트를 하나로 병합하지만 사용법과 효율성 측면에서 다릅니다.

UNION은 테이블 연결 후 중복 레코드를 필터링하므로, 테이블 연결 후 생성된 결과 집합을 정렬하고 중복 레코드를 삭제한 후 결과를 반환합니다.

대부분의 실제 애플리케이션에서는 중복 레코드가 생성되지 않습니다. 가장 일반적인 레코드는 프로세스 테이블과 기록 테이블 UNION입니다. 예:

select * from gc_dfys union select * from ls_jg_dfys

로그인 후 복사

이 SQL은 실행 시 먼저 두 테이블의 결과를 검색한 다음 정렬 공간을 사용하여 중복 레코드를 정렬 및 삭제하고 마지막으로 결과 집합을 반환합니다. 테이블 데이터가 큰 경우 정렬에 디스크가 사용될 수 있습니다.

UNION ALL은 단순히 두 결과를 결합하여 반환합니다. 이러한 방식으로 반환된 두 결과 집합에 중복 데이터가 있는 경우 반환된 결과 집합에는 중복 데이터가 포함됩니다.

효율성 측면에서 UNION ALL은 UNION보다 훨씬 빠르므로 병합된 두 결과 집합에 중복 데이터가 포함되지 않은 것을 확인할 수 있다면 다음과 같이 UNION ALL을 사용하세요.

select * from gc_dfys union all select * from ls_jg_dfys

로그인 후 복사

참고: mysql에서 Union All 문제에 따른 순서

오늘 mysql 데이터베이스 코드를 작성하다가 유니온 결과가 예상치 못한 결과를 발견했습니다

$stime = date("H:i:s");
$sql1 = "select * from T where '$stime'>stime order by stime desc";
$sql2 = "select * from T where stime>'$stime' order by stime asc";
$sql = "($sql) union all ($sql2)";

로그인 후 복사

$sql1과 $sql2를 각각 실행했을 때 결과가 정확했습니다

그런데 $sql을 실행해보니 결과가 반대로 나오더군요. $sql1 부분은 오름차순으로, $sql2 부분은 내림차순으로 바뀌었습니다

검색 결과가 만족스럽지 못했습니다. 일부 데이터베이스에서는

의 단어 순서를 아직 지원하지 않는 것 같습니다.

우연히 이것이 작동한다는 사실을 발견했습니다.

코드는 다음과 같습니다.

$sql = "select * from ($sql1) as temp1 Union all select * from ($sql2) as temp2";


이는 Union 사용법이 올바르지 않기 때문입니다. Union 연산에서 order by 문은 Union 연산으로 결합된 두 개의 select 문에 나타날 수 없습니다. 두 번째 select 문 다음에 order by 절을 지정하여 정렬을 수행할 수 있습니다.

더 많은 MySQL 관련 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제인 "MySQL 인덱스 작업 기술 요약", "MySQL 로그 작업 기술 종합 모음", "MySQL 트랜잭션 작업 기술 요약"을 확인할 수 있습니다. , "MySQL 저장 프로시저 기술 종합 모음" , "MySQL 데이터베이스 잠금 관련 기술 요약" 및 "자주 사용되는 MySQL 함수 요약"

이 기사가 MySQL 데이터베이스를 계획하는 모든 사람에게 도움이 되기를 바랍니다.

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

MySQL의 역할 : 웹 응용 프로그램의 데이터베이스 MySQL의 역할 : 웹 응용 프로그램의 데이터베이스 Apr 17, 2025 am 12:23 AM

웹 응용 프로그램에서 MySQL의 주요 역할은 데이터를 저장하고 관리하는 것입니다. 1. MySQL은 사용자 정보, 제품 카탈로그, 트랜잭션 레코드 및 기타 데이터를 효율적으로 처리합니다. 2. SQL 쿼리를 통해 개발자는 데이터베이스에서 정보를 추출하여 동적 컨텐츠를 생성 할 수 있습니다. 3.mysql은 클라이언트-서버 모델을 기반으로 작동하여 허용 가능한 쿼리 속도를 보장합니다.

LARAVEL 소개 예 LARAVEL 소개 예 Apr 18, 2025 pm 12:45 PM

Laravel은 웹 응용 프로그램을 쉽게 구축하기위한 PHP 프레임 워크입니다. 설치 : Composer를 사용하여 전 세계적으로 Laravel CLI를 설치하고 프로젝트 디렉토리에서 응용 프로그램을 작성하는 등 다양한 기능을 제공합니다. 라우팅 : Routes/Web.php에서 URL과 핸들러 간의 관계를 정의하십시오. 보기 : 리소스/뷰에서보기를 작성하여 응용 프로그램의 인터페이스를 렌더링합니다. 데이터베이스 통합 : MySQL과 같은 데이터베이스와 상자 외 통합을 제공하고 마이그레이션을 사용하여 테이블을 작성하고 수정합니다. 모델 및 컨트롤러 : 모델은 데이터베이스 엔티티를 나타내고 컨트롤러는 HTTP 요청을 처리합니다.

MySQL 및 Phpmyadmin : 핵심 기능 및 기능 MySQL 및 Phpmyadmin : 핵심 기능 및 기능 Apr 22, 2025 am 12:12 AM

MySQL 및 Phpmyadmin은 강력한 데이터베이스 관리 도구입니다. 1) MySQL은 데이터베이스 및 테이블을 작성하고 DML 및 SQL 쿼리를 실행하는 데 사용됩니다. 2) PHPMYADMIN은 데이터베이스 관리, 테이블 구조 관리, 데이터 운영 및 사용자 권한 관리에 직관적 인 인터페이스를 제공합니다.

MySQL 대 기타 프로그래밍 언어 : 비교 MySQL 대 기타 프로그래밍 언어 : 비교 Apr 19, 2025 am 12:22 AM

다른 프로그래밍 언어와 비교할 때 MySQL은 주로 데이터를 저장하고 관리하는 데 사용되는 반면 Python, Java 및 C와 같은 다른 언어는 논리적 처리 및 응용 프로그램 개발에 사용됩니다. MySQL은 데이터 관리 요구에 적합한 고성능, 확장 성 및 크로스 플랫폼 지원으로 유명하며 다른 언어는 데이터 분석, 엔터프라이즈 애플리케이션 및 시스템 프로그래밍과 같은 해당 분야에서 이점이 있습니다.

데이터베이스 연결 문제 해결 : Minii/DB 라이브러리 사용 실질적인 사례 데이터베이스 연결 문제 해결 : Minii/DB 라이브러리 사용 실질적인 사례 Apr 18, 2025 am 07:09 AM

작은 응용 프로그램을 개발할 때 까다로운 문제가 발생했습니다. 가벼운 데이터베이스 운영 라이브러리를 신속하게 통합해야합니다. 여러 라이브러리를 시도한 후에는 기능이 너무 많거나 호환되지 않는다는 것을 알았습니다. 결국, 나는 내 문제를 완벽하게 해결하는 YII2를 기반으로 단순화 된 버전 인 Minii/DB를 발견했습니다.

Laravel 프레임 워크 설치 방법 Laravel 프레임 워크 설치 방법 Apr 18, 2025 pm 12:54 PM

기사 요약 :이 기사는 Laravel 프레임 워크를 쉽게 설치하는 방법에 대한 독자들을 안내하기위한 자세한 단계별 지침을 제공합니다. Laravel은 웹 애플리케이션의 개발 프로세스를 가속화하는 강력한 PHP 프레임 워크입니다. 이 자습서는 시스템 요구 사항에서 데이터베이스 구성 및 라우팅 설정에 이르기까지 설치 프로세스를 다룹니다. 이러한 단계를 수행함으로써 독자들은 라벨 프로젝트를위한 탄탄한 토대를 빠르고 효율적으로 놓을 수 있습니다.

초보자를위한 MySQL : 데이터베이스 관리를 시작합니다 초보자를위한 MySQL : 데이터베이스 관리를 시작합니다 Apr 18, 2025 am 12:10 AM

MySQL의 기본 작업에는 데이터베이스, 테이블 작성 및 SQL을 사용하여 데이터에서 CRUD 작업을 수행하는 것이 포함됩니다. 1. 데이터베이스 생성 : createAbasemy_first_db; 2. 테이블 만들기 : CreateTableBooks (idintauto_incrementprimarykey, titlevarchar (100) notnull, authorvarchar (100) notnull, published_yearint); 3. 데이터 삽입 : InsertIntobooks (Title, Author, Published_year) VA

MySQL 모드 해결 문제 : theliamysqlmodeschecker 모듈 사용 경험 MySQL 모드 해결 문제 : theliamysqlmodeschecker 모듈 사용 경험 Apr 18, 2025 am 08:42 AM

Thelia를 사용하여 전자 상거래 웹 사이트를 개발할 때 까다로운 문제가 발생했습니다. MySQL 모드가 제대로 설정되지 않아 일부 기능이 제대로 작동하지 않습니다. 약간의 탐색 후, 나는 theliamysqlmodeschecker라는 모듈을 발견했습니다.이 모듈은 Thelia가 요구하는 MySQL 패턴을 자동으로 수정하여 내 문제를 완전히 해결할 수 있습니다.

See all articles