μ°μ²΄ μ΄λ ₯ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ νν°μ λ λ°©μ(RANGE, LIST, HASH λ±)μ μ μ©νκ³ , λ°©μλ³ μΏΌλ¦¬ μ±λ₯μ λΆμν νλ‘μ νΈμ λλ€.
| μ΄μ ν | κΉλλ―Ό | μ΄κΈ°ν | μ₯μ‘ν |
|---|---|---|---|
| lyjh98 | kddmmm | GIHYUN-LEE | jangongha |
![]() |
![]() |
![]() |
![]() |
- λ Όλ¦¬μ μΌλ‘λ νλμ ν μ΄λΈμ, 물리μ μΌλ‘ μ¬λ¬ ν μ΄λΈλ‘ λλμ΄ κ΄λ¦¬νλ κΈ°λ²μ λλ€.
- λμ©λ ν μ΄λΈμ λΆν νμ¬ μ±λ₯ ν₯μ λ° κ΄λ¦¬ μ©μ΄μ± ν보 λ±μ ν¨κ³Όκ° μμ΅λλ€.
- νν°μ λ νμ΅
- MySQL νν°μ
λ λ°©μ(
RANGE,LIST,HASH,KEY) μ΄ν΄ - λ¨μΌ νν°μ λκ³Ό λ³΅ν© νν°μ λμ μ±λ₯ μ°¨μ΄ λΉκ΅ λ° λΆμ
- νν°μ
λ λ°©μλ³
PROCEDUREλ₯Ό ν΅ν΄ μ±λ₯ μ°¨μ΄ λΉκ΅ λ° λΆμ
| κ΅¬λΆ | λ΄μ© |
|---|---|
| μΈ‘μ νλͺ© | 쿼리 μ€νμκ° |
| μΈ‘μ λμ | μΌλ° ν
μ΄λΈ λ° νν°μ
λ μ μ© ν
μ΄λΈ 8κ° (Range,List,Hash,Key,Range-Hash,Range-Key,List-Hash,List-Key) |
| λΉκ΅ 쑰건 | 1. νν°μ
λ μ μ© μ 무μ λ°λ₯Έ μ°¨μ΄ 2. λ¨μΌ νν°μ λ λ°©μλ³ μ°¨μ΄ 3. λ³΅ν© νν°μ λ λ°©μλ³ μ°¨μ΄ |
| μ¬μ 쑰건 | λμ ν μ΄λΈ 9κ°μ λμΌν λ°μ΄ν°(10λ§κ±΄) μ½μ |
| μ λ ₯ 쑰건 | λμΌ μ‘°ν쿼리 500ν λ°λ³΅ μ λ ₯ |
| μ Β Β Β Β Β Β Β Β μ°¨ | 1. λμ ν
μ΄λΈμ μ
λ ₯ 쑰건 3ν μ€ν 2. QueryManagerλ‘ μ€νμκ° νκ· κ° λμΆ 3. Mysqlμλ² μ¬μμ 4.λλ¨Έμ§ ν μ΄λΈμ λ°λ³΅ μ€ν |
- DBMS: MySQL 8.2.0
- Tool: DBeaver, MySQL
- OS: Windows 10 / Ubuntu 22.04
λ°μ΄ν° μΆμ²: https://www.aihub.or.kr μ κΈμ΅ λ°μ΄ν°(νμμ 보, μμ‘μ 보) μ΄μ©νμμ΅λλ€.
λ°μ΄ν° ν¬κΈ° : μ΄ 100,000건 | νμΌ ν¬κΈ° : 5.6MB (csv, UTF-8 μΈμ½λ©)
1. pythonμ μ΄μ©ν ν
μ΄λΈ μμ±
μ¬μ©μλ³ μ°μ²΄ μνλλ₯Ό νμνκΈ° μν΄ μ°μ²΄ κ΄λ ¨ 컬λΌ(μΌμ, μμ‘ λ±)κ³Ό νμμ 보λ₯Ό μΆμΆνμ¬ λ³ν©νμμ΅λλ€.
2. λ°κΈνμλ²νΈ format
λ°κΈνμλ²νΈμ κ°μ΄ SYN_0ννμ varcharνμ
μΌλ‘ μ 곡λμ΄ μμ΄ INT νμμΌλ‘ ν¬λ©§νμμ΅λλ€.
-- SYN_0 μΌλ‘ μ 곡λ κ° -> 0 μΌλ‘ λ³κ²½
UPDATE real_dataset SET λ°κΈνμλ²νΈ = REPLACE(λ°κΈνμλ²νΈ, 'SYN_', '');
-- 0,1,2 .. μΌλ‘ λ³κ²½λ κ° INT νμ
μΌλ‘ νμ
λ³κ²½
ALTER TABLE real_dataset MODIFY COLUMN λ°κΈνμλ²νΈ INT;3. PK μ€μ
νν°μ
λ° μλΈνν°μ
KEYλ‘ μ¬μ©νκΈ° μν΄ λ³΅ν©PK μ€μ νμμ΅λλ€.
-- λ°κΈνμλ²νΈ, μ°μ²΄μ°λ primary keyλ‘ λ±λ‘
ALTER TABLE real_dataset ADD PRIMARY KEY (λ°κΈνμλ²νΈ, μ°μ²΄μ°λ);4. λ°μ΄ν° μ½μ
-- ν
μ΄λΈλ³ λ°μ΄ν° μ½μ
INSERT INTO νν°μ
ν
μ΄λΈλͺ
(λ°κΈνμλ²νΈ, λ¨λ
ꡬλΆμ½λ, μ°λ Ή, κ±°μ£Όμλλͺ
, μμ€νμ_μΌμλΆ_B0M, μ°μ²΄μΌμ_B0M, μ°μ²΄μμ‘_B0M, μ°μ²΄μμ‘_μΌμλΆ_B0M, μ°μ²΄μμ‘_ν λΆ_B0M, μ°μ²΄μ°λ)
SELECT λ°κΈνμλ²νΈ, λ¨λ
ꡬλΆμ½λ, μ°λ Ή, κ±°μ£Όμλλͺ
, μμ€νμ_μΌμλΆ_B0M, μ°μ²΄μΌμ_B0M, μ°μ²΄μμ‘_B0M, μ°μ²΄μμ‘_μΌμλΆ_B0M, μ°μ²΄μμ‘_ν λΆ_B0M, μ°μ²΄μ°λ
FROM real_dataset;| 컬λΌλͺ | λ°μ΄ν° νμ | λ°μ΄ν° νμ |
|---|---|---|
| λ°κΈνμλ²νΈ | INT (PK) | 0 ,1, 2... |
| μ°μ²΄μ°λ | INT (PK) | 2000,2001... |
| μ°μ²΄μΌμ_B0M | DATE | 2002-02-10, 2024-10-30, ... |
| λ¨λ ꡬλΆμ½λ | INT | 1(λ¨),2(μ¬),1(λ¨),... |
| μ°λ Ή | VARCHAR(20) | 10λ, 20λ,30λ,.. |
| κ±°μ£Όμλλͺ | VARCHAR(20) | μμΈ,λΆμ°,.. |
| μμ€νμ_μΌμλΆ_B0M | INT | 100,220 ,123,321... |
| μ°μ²΄μμ‘_B0M | INT | 100,000 , 200,100... |
| μ°μ²΄μμ‘_μΌμλΆ_B0M | INT | 123,321... |
| μ°μ²΄μμ‘_ν λΆ | INT | 0, 133,122... |
- νν°μ κ°μ 5κ°λ‘ λΆν (λ¨μΌ νν°μ λ 5κ°, λ³΅ν© νν°μ λ 25κ°)
- νν°μ ν€ : λ°κΈνμλ²νΈ, μ°μ²΄μ°λ
SELECT
TABLE_NAME, PARTITION_NAME, SUBPARTITION_NAME, PARTITION_METHOD, SUBPARTITION_METHOD, TABLE_ROWS
FROM
information_schema.PARTITIONS
WHERE TABLE_NAME='ν
μ΄λΈλͺ
';
3. μλ ν μ΄λΈμ μ΅μ’ ν μ΄λΈ μ μ ν λλ‘ νν°μ λμ μ μ©ν ν μ΄λΈμ λλ€.
1. LIST νν°μ λ
1-1. LIST νν°μ λ
CREATE TABLE list (
λ°κΈνμλ²νΈ INT,
λ¨λ
ꡬλΆμ½λ INT,
μ°λ Ή VARCHAR(20),
κ±°μ£Όμλλͺ
VARCHAR(20),
μμ€νμ_μΌμλΆ_B0M INT,
μ°μ²΄μΌμ_B0M DATE,
μ°μ²΄μ°λ INT,
μ°μ²΄μμ‘_B0M INT,
μ°μ²΄μμ‘_μΌμλΆ_B0M INT,
μ°μ²΄μμ‘_ν λΆ_B0M INT,
primary key(λ°κΈνμλ²νΈ, μ°μ²΄μ°λ)
) PARTITION BY LIST (μ°μ²΄μ°λ)(
PARTITION P2005 VALUES IN (2000,2001, 2002, 2003, 2004),
PARTITION P2010 VALUES IN (2005, 2006, 2007, 2008, 2009),
PARTITION P2015 VALUES IN (2010, 2011, 2012, 2013, 2014),
PARTITION P2020 VALUES IN (2015, 2016, 2017, 2018, 2019),
PARTITION P2025 VALUES IN (2020, 2021, 2022, 2023, 2024, 2025)
);
1-2. LIST-HASH νν°μ λ
CREATE TABLE list_hash (
λ°κΈνμλ²νΈ INT,
λ¨λ
ꡬλΆμ½λ INT,
μ°λ Ή VARCHAR(20),
κ±°μ£Όμλλͺ
VARCHAR(20),
μμ€νμ_μΌμλΆ_B0M INT,
μ°μ²΄μΌμ_B0M DATE,
μ°μ²΄μ°λ INT,
μ°μ²΄μμ‘_B0M INT,
μ°μ²΄μμ‘_μΌμλΆ_B0M INT,
μ°μ²΄μμ‘_ν λΆ_B0M INT,
primary key(λ°κΈνμλ²νΈ, μ°μ²΄μ°λ)
) PARTITION BY list (μ°μ²΄μ°λ)
SUBPARTITION BY hash(λ°κΈνμλ²νΈ)
SUBPARTITIONS 5(
PARTITION P2005 VALUES IN (2000,2001, 2002, 2003, 2004),
PARTITION P2010 VALUES IN (2005, 2006, 2007, 2008, 2009),
PARTITION P2015 VALUES IN (2010, 2011, 2012, 2013, 2014),
PARTITION P2020 VALUES IN (2015, 2016, 2017, 2018, 2019),
PARTITION P2025 VALUES IN (2020, 2021, 2022, 2023, 2024, 2025)
);
1-3. LIST-KEY νν°μ
λ
CREATE TABLE list_key (
λ°κΈνμλ²νΈ INT,
λ¨λ
ꡬλΆμ½λ INT,
μ°λ Ή VARCHAR(20),
κ±°μ£Όμλλͺ
VARCHAR(20),
μμ€νμ_μΌμλΆ_B0M INT,
μ°μ²΄μΌμ_B0M DATE,
μ°μ²΄μ°λ INT,
μ°μ²΄μμ‘_B0M INT,
μ°μ²΄μμ‘_μΌμλΆ_B0M INT,
μ°μ²΄μμ‘_ν λΆ_B0M INT,
primary key(λ°κΈνμλ²νΈ, μ°μ²΄μ°λ)
) PARTITION BY list (μ°μ²΄μ°λ)
SUBPARTITION BY key(λ°κΈνμλ²νΈ)
SUBPARTITIONS 5(
PARTITION P2005 VALUES IN (2000,2001, 2002, 2003, 2004),
PARTITION P2010 VALUES IN (2005, 2006, 2007, 2008, 2009),
PARTITION P2015 VALUES IN (2010, 2011, 2012, 2013, 2014),
PARTITION P2020 VALUES IN (2015, 2016, 2017, 2018, 2019),
PARTITION P2025 VALUES IN (2020, 2021, 2022, 2023, 2024, 2025)
);
2. RANGE νν°μ λ
2-1. RANGE νν°μ λ
CREATE TABLE p_range (
λ°κΈνμλ²νΈ INT,
λ¨λ
ꡬλΆμ½λ INT,
μ°λ Ή VARCHAR(20),
κ±°μ£Όμλλͺ
VARCHAR(20),
μμ€νμ_μΌμλΆ_B0M INT,
μ°μ²΄μΌμ_B0M DATE,
μ°μ²΄μ°λ INT,
μ°μ²΄μμ‘_B0M INT,
μ°μ²΄μμ‘_μΌμλΆ_B0M INT,
μ°μ²΄μμ‘_ν λΆ_B0M INT,
primary key(λ°κΈνμλ²νΈ, μ°μ²΄μ°λ)
) PARTITION BY range (μ°μ²΄μ°λ)(
PARTITION P2005 VALUES LESS THAN (2005),
PARTITION P2010 VALUES LESS THAN (2010),
PARTITION P2015 VALUES LESS THAN (2015),
PARTITION P2020 VALUES LESS THAN (2020),
PARTITION P2025 VALUES LESS THAN MAXVALUE
);
2-2. RANGE-HASH νν°μ λ
CREATE TABLE range_hash (
λ°κΈνμλ²νΈ INT,
λ¨λ
ꡬλΆμ½λ INT,
μ°λ Ή VARCHAR(20),
κ±°μ£Όμλλͺ
VARCHAR(20),
μμ€νμ_μΌμλΆ_B0M INT,
μ°μ²΄μΌμ_B0M DATE,
μ°μ²΄μ°λ INT,
μ°μ²΄μμ‘_B0M INT,
μ°μ²΄μμ‘_μΌμλΆ_B0M INT,
μ°μ²΄μμ‘_ν λΆ_B0M INT,
primary key(λ°κΈνμλ²νΈ, μ°μ²΄μ°λ)
) PARTITION BY range (μ°μ²΄μ°λ)
SUBPARTITION BY HASH(λ°κΈνμλ²νΈ)
SUBPARTITIONS 5(
PARTITION P2005 VALUES LESS THAN (2005),
PARTITION P2010 VALUES LESS THAN (2010),
PARTITION P2015 VALUES LESS THAN (2015),
PARTITION P2020 VALUES LESS THAN (2020),
PARTITION P2025 VALUES LESS THAN MAXVALUE
);
2-3. RANGE-KEY νν°μ
λ
CREATE TABLE range_key (
λ°κΈνμλ²νΈ INT,
λ¨λ
ꡬλΆμ½λ INT,
μ°λ Ή VARCHAR(20),
κ±°μ£Όμλλͺ
VARCHAR(20),
μμ€νμ_μΌμλΆ_B0M INT,
μ°μ²΄μΌμ_B0M DATE,
μ°μ²΄μ°λ INT,
μ°μ²΄μμ‘_B0M INT,
μ°μ²΄μμ‘_μΌμλΆ_B0M INT,
μ°μ²΄μμ‘_ν λΆ_B0M INT,
primary key(λ°κΈνμλ²νΈ, μ°μ²΄μ°λ)
) PARTITION BY range (μ°μ²΄μ°λ)
SUBPARTITION BY key(λ°κΈνμλ²νΈ)
SUBPARTITIONS 5(
PARTITION P2005 VALUES LESS THAN (2005),
PARTITION P2010 VALUES LESS THAN (2010),
PARTITION P2015 VALUES LESS THAN (2015),
PARTITION P2020 VALUES LESS THAN (2020),
PARTITION P2025 VALUES LESS THAN MAXVALUE
);
3. HASH νν°μ λ
CREATE TABLE hash (
λ°κΈνμλ²νΈ INT,
λ¨λ
ꡬλΆμ½λ INT,
μ°λ Ή VARCHAR(20),
κ±°μ£Όμλλͺ
VARCHAR(20),
μμ€νμ_μΌμλΆ_B0M INT,
μ°μ²΄μΌμ_B0M DATE,
μ°μ²΄μ°λ INT,
μ°μ²΄μμ‘_B0M INT,
μ°μ²΄μμ‘_μΌμλΆ_B0M INT,
μ°μ²΄μμ‘_ν λΆ_B0M INT,
primary key(λ°κΈνμλ²νΈ, μ°μ²΄μ°λ)
) PARTITION BY hash (μ°μ²΄μ°λ)
PARTITIONS 5;
HASH νν°μ
λ μ μ© ν
μ΄λΈ νμΈ

4. KEY νν°μ λ
CREATE TABLE p_key (
λ°κΈνμλ²νΈ INT,
λ¨λ
ꡬλΆμ½λ INT,
μ°λ Ή VARCHAR(20),
κ±°μ£Όμλλͺ
VARCHAR(20),
μμ€νμ_μΌμλΆ_B0M INT,
μ°μ²΄μΌμ_B0M DATE,
μ°μ²΄μ°λ INT,
μ°μ²΄μμ‘_B0M INT,
μ°μ²΄μμ‘_μΌμλΆ_B0M INT,
μ°μ²΄μμ‘_ν λΆ_B0M INT,
primary key(λ°κΈνμλ²νΈ, μ°μ²΄μ°λ)
) PARTITION BY key (μ°μ²΄μ°λ)
PARTITIONS 5;
KEY νν°μ
λ μ μ© ν
μ΄λΈ νμΈ

PROCEDUREλ₯Ό μ΄μ©νμ¬ νν°μ
λ ν
μ΄λΈ λ³ 500λ²μ© μ°μ²΄μ°λ = 2000 and λ°κΈνμλ²νΈ=9945 쑰건μ μ‘°νν©λλ€.(μμμ€μ )
- μ»΄ν¨ν° νλ‘κ·Έλλ°μμ νΉμ μμ μ μννκΈ° μν΄ μΌλ ¨μ λͺ λ Ήμ΄λ€μ λͺ¨μλμ κ²μ λλ€.
- μ΄λ¬ν λͺ λ Ήμ΄ μ§ν©μ νλμ λ¨μλ‘μ μλνλ©°, λ°λ³΅μ μΌλ‘ μνλμ΄μΌ νλ μμ λ€μ ν¨μ¨μ μΌλ‘ μ²λ¦¬ν μ μκ² ν΄μ€λλ€.
-- ν
μ€νΈ νλ‘μμ Έ
CREATE PROCEDURE test()
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i < 500 DO
SELECT * FROM ν
μ΄λΈλͺ
IGNORE INDEX (PRIMARY) WHERE μ°μ²΄μ°λ=2000 and λ°κΈνμλ²νΈ=9945;
SET i = i + 1;
END WHILE;
END;
-- νλ‘μμ Έ νΈμΆ
CALL test();
| νν°μ λ λ°©μ | νκ· μ€ν μκ° (s) | λ¨μΌ ν μ΄λΈ λλΉ μ±λ₯ ν₯μλ₯ (%) |
|---|---|---|
| νν°μ λ λ―Έμ μ© | 18s | - |
| LIST | 4.195s | β² 76.7% |
| LIST-HASH | 1.01s | β² 94.4% |
| LIST-KEY | 1.001s | β² 94.4% |
| RANGE | 4.125s | β² 77.1% |
| RANGE-HASH | 0.98s | β² 94.6% |
| RANGE-KEY | 1.032s | β² 94.3% |
| HASH | 4.531s | β² 74.8% |
| KEY | 4.982s | β² 72.3% |
νν°μ λ λ°©μλ³ ν μ€νΈ μΆλ ₯νλ©΄
1. λ¨μΌν μ΄λΈ μ±λ₯2. LIST νν°μ λ
3. LIST-HASH νν°μ λ
4. LIST-KEY νν°μ λ
5. RANGE νν°μ λ
6. RANGE-HASH νν°μ λ
7. RANGE-KEY νν°μ λ
8. HASH νν°μ λ
9. KEY νν°μ λ
- λ¨μΌ νν°μ λ μ κ²½μ° : μ½ 75% ν₯μ νμ΅λλ€.
- λ³΅ν© νν°μ λ μ κ²½μ° : μ½ 94% ν₯μ νμ΅λλ€.
- λ³΅ν© νν°μ λμ λ¨μΌ νν°μ λλ³΄λ€ μ½ 77% ν₯μ νμ΅λλ€.
- λ¨μΌ νν°μ
λ μ κ²½μ° :
RANGE - λ³΅ν© νν°μ
λ μ κ²½μ° :
RANGE-HASH - κ³ λ €μ¬ν : νν°μ λ λ°©μμ λ°λ₯Έ μμ΄ν λ°μ΄ν° νμ , λ°©λν λ°μ΄ν° λ° νν°μ κ°μλ₯Ό κ³ λ €ν΄μΌν©λλ€.
- 8κ°μ λ°©μ μ€ μ μΌνκ² λ°μ΄ν°κ° κ· λ±νκ² λΆν λμ§ μμμ΅λλ€.
KEYλ MySQL λ΄λΆμ λΉκ³΅κ° ν΄μ μκ³ λ¦¬μ¦μ μ¬μ©νμ¬, λΆμ° λ°©μμ μμΈ‘μ΄ λΆκ° νλ©° λ°μ΄ν°κ° νΈμ€λ μ μμ΅λλ€.
- KEY νν°μ λμ λ°μ΄ν° νΉμ± λ° λΆν¬μ λ―Όκ°νλ―λ‘ μ€λ¬΄ μ μ© μ μ£Όμ νμν©λλ€.
- λ°μ΄ν° μκ³Ό νν°μ κ°μμ λ°λ₯Έ λΆμ νμν©λλ€.
- νλ‘μ νΈ μ΄λ° μμ΄λμ΄λ₯Ό λμΆνκ³ μ 리νλ κ³Όμ μμ,λμΌν μ£Όμ λ₯Ό λ°λΌλ³΄λ κ΄μ κ³Ό ν΄μμ΄ κ΅¬μ±μλ§λ€ λ¬λΌ μμ΄λμ΄ μ μ μ μκ°μ΄ κ±Έλ Έμ΅λλ€.
- ν΄κ²° λ°©λ²
- μλ‘κ° μκ°νλ νλ‘μ νΈμ λ°©ν₯μ±κ³Ό ν΅μ¬ λͺ©νμ λν΄ κ΅¬μ²΄μ μΌλ‘ λννλ μκ°μ λ§λ ¨νκ³ ,
μ΄λ₯Ό ν΅ν΄ κ°μμ κ΄μ κ³Ό ν΄μ μ°¨μ΄ μ΄ν΄νλ λ¨κ³λ₯Ό ν΅ν΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
β ν΄κ²° μλ£
- μλ‘κ° μκ°νλ νλ‘μ νΈμ λ°©ν₯μ±κ³Ό ν΅μ¬ λͺ©νμ λν΄ κ΅¬μ²΄μ μΌλ‘ λννλ μκ°μ λ§λ ¨νκ³ ,
csvνμΌμUTF-8λ‘ μ μ₯νμμλ μ λ‘λ μ νκΈ κΉ¨μ§ νμ λ°μνμ΅λλ€.- ν΄κ²° λ°©λ²
- μ
λ‘λ μ
SET NAMES utf8mb4λ‘ λ¬Έμμ λκΈ°ν μ²λ¦¬λ₯Ό ν΅ν΄ ν΄κ²°νμ΅λλ€.
β λ¬Έμ ν΄κ²° μλ£
- μ
λ‘λ μ
-
λͺ©ν
μ±λ³κΈ°μ€μΌλ‘ 리μ€νΈ λΆν ν,μ°μ²΄μκΈ_μ΅κ·ΌκΈ°μ€ λ²μλ‘ μλΈ νν°μ λμ λͺ©νλ‘ μ§νν΄ λ³΄μμ΅λλ€. -
μλν μ½λ
CREATE TABLE temp_data ( λ°κΈνμλ²νΈ VARCHAR(20), μ±λ³ CHAR(1), μ°μ²΄μκΈ_μ΅κ·Ό INT ) PARTITION BY LIST (μ±λ³) SUBPARTITION BY RANGE (μ°μ²΄μκΈ_μ΅κ·Ό) ( PARTITION p_male VALUES IN ('M') SUBPARTITIONS 3 ( SUBPARTITION sp_male_low VALUES LESS THAN (100000), SUBPARTITION sp_male_mid VALUES LESS THAN (500000), SUBPARTITION sp_male_high VALUES LESS THAN MAXVALUE ), PARTITION p_female VALUES IN ('F') SUBPARTITIONS 3 ( SUBPARTITION sp_female_low VALUES LESS THAN (100000), SUBPARTITION sp_female_mid VALUES LESS THAN (500000), SUBPARTITION sp_female_high VALUES LESS THAN MAXVALUE ) );
-
κ²°κ³Ό
β MySQLμμLIST + RANGEμ‘°ν©μ μ§μ μ μΈ μλΈ νν°μ λμΌλ‘ μ§μλμ§ μμμ΅λλ€.
-
λͺ©ν
λ€μ°¨μ κΈ°μ€ (μ°μ²΄μΌμ, μ 보μμ΄λ, κΈμ‘)μ λͺ¨λ λ°μνκΈ° μν΄
RANGE β HASH β LISTꡬ쑰μ 3λ¨κ³ νν°μ λ μλν΄ λ³΄μμ΅λλ€. -
κ²°κ³Ό
β μλΈ νν°μ λμΌλ‘ 3μ°¨λ MySQLμμ νμ©λμ§ μμμ΅λλ€.
π’ κ²°λ‘
MYSQL κΈ°μ€ 2λ¨κ³ νν°μ
λκΉμ§ μ§μνλ©°, λ©μΈ νν°μ
λμ RANGEμ LIST μλΈ νν°μ
λμ HASHμ KEY μ¬μ© κ°λ₯νλ€λκ±Έ μκ²λμμ΅λλ€.
- μ΄μ
explain analyze select * from range_hash
where μ°μ²΄μ°λ=2000 and λ°κΈνμλ²νΈ=9945;
rowμ μκ° μλΈνν°μ
μ row(μ½ 4000κ°)λ‘ μΆλ ₯λμ§ μλ μ΄μ λ°μνμ΅λλ€.
- ν΄κ²° λ°©λ²
explain analyze select * from range_hash
IGNORE INDEX (PRIMARY)
where μ°μ²΄μ°λ=2000 and λ°κΈνμλ²νΈ=9945;νν°μ λ κΈ°λ²λ§μΌλ‘ μ±λ₯ λΉκ΅λ₯Ό μν΄ PK μΈλ±μ€ νμμ λ°°μ νμ¬ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.










