π‘ μΈλ±μ€λ ν μ΄λΈμμ κ²μ μλλ₯Ό ν₯μμν€κΈ° μν λͺ©μ μΌλ‘ μ‘΄μ¬νλ€. μΈλ±μ€λ 물리μ μΈ μμΉμ λν μ 보λ₯Ό κ°μ§κ³ μλ€.
- PK, FK μ»¬λΌ μ§μ μμ μΈλ±μ€κ° μλμΌλ‘ μμ±λλ€.
- μ£Όλ‘ WHEREμ μ 쑰건μ΄λ JOIN μ°μ°μ μμ±νλ€.
π‘ μΈλ±μ€κ° νμ μ’μ κ²λ§μ μλλ€.
- λ°μ΄ν° λ³κ²½μ¬νμ λ°λΌ μΈλ±μ€λ λ³κ²½λμ΄μΌ νλ€λ μ μμ λ²κ±°λ‘λ€λ μ μ΄ μλ€. μΌλΆ λ°μ΄ν°λ€μ΄ μμ λλ©΄ ν μ΄λΈ λ΄λΆμ λ°μ΄ν° μΈλ±μ€λ₯Ό μ λ ¬ν κ΅¬μ‘°κ° ννΈλ¬μ§λ€. μλ£κ΅¬μ‘°μ λ°μ΄ν°κ° νΈν₯λκ³ μΈλ±μ€μ μμκ° λ³μ§λκΈ° λλ¬Έμ κ²°κ΅ ν¨μ¨μ μ΄μ§ μκ² λλ€. μΈλ±μ€λ λ°μ΄ν°μ λ³νμ λ°λΌ λ³κ²½λκ³ μ¬κ΅¬μ± ν΄μΌνλ€.
- μΈλ±μ€λ 물리μ μΌλ‘ μ μ₯λλ€λ μ μμ μ μ₯곡κ°μ μ°¨μ§νκ² λλ€. μν©μ λ°λΌ μΈλ±μ€κ° ν¨μ¨μ μΌμλ μκ³ νμ€μΊμ΄ ν¨μ¨μ μΌ μ μλ€. μ΄λ€ νΉμ 컬λΌμ΄ 쑰건 κ²μμ μ°μ¬μ νμ€μΊλ³΄λ€λ μΈλ±μ€κ° λμ κ² κ°λ€ νλ¨μ΄ λλ κ²λ§ μΈλ±μ€λ₯Ό μμ±ν΄μΌ νλ€.
μ΅ν°λ§μ΄μ μ μ’ λ₯
1) λΉμ©κΈ°λ° μ΅ν°λ§μ΄μ (Cost-Based Optimizer, CBO)
: 쿼리λ₯Ό μ€ννλ λ° νμν λΉμ©μ μΆμ νμ¬ μΏΌλ¦¬ μ€ν κ³νμ μ ννλ€. μ΄ λΉμ©μ λμ€ν¬
I/O, CPU μ¬μ©λ λ±μ μμ μ¬μ©μ κ³ λ €νκ³ λ°μ΄ν°λ² μ΄μ€μ ν΅κ³ μ 보(ν μ΄λΈμ ν μ,
μΈλ±μ€μ μ λν¬ν κ° λ±)λ₯Ό μ¬μ©νμ¬ λΉμ©μ μΆμ νλ€.λ°μ΄ν°λ² μ΄μ€μ μ€μ μν©μ λ μ λ°μνλ 쿼리 μ€ν κ³νμ μ νν μ μλ€.2) κ·μΉκΈ°λ° μ΅ν°λ§μ΄μ (Rule-Based Optimizer, RBO)
: κ³ μ λ μΈνΈμ κ·μΉμ κΈ°λ°μΌλ‘ 쿼리 μ€ν κ³νμ κ²°μ νλ€. κ·μΉμ κ°λ°μλ DBA(Database
Administrator)κ° μ€μ ν μ μμΌλ©° νΉμ μν©μμ νΉμ μ νμ΄ μ°μ°μ΄ λ ν¨κ³Όμ μ΄λΌλ κ²½ν
μ μΈ μ§μμ κΈ°λ°ν΄ μ ν΄μ§λ€.μ€μ λ°μ΄ν° λΆν¬λ ν΅κ³λ₯Ό κ³ λ €νμ§ μμΌλ―λ‘ λλλ‘ λΉν¨μ¨μ μΈ μΏΌλ¦¬ μ€ν κ³νμ μ νν μ μλ€.
Using where EXPLAIN SELECT * FROM phone WHERE phone_name = 'galaxyS23';

Using Index condition (μ»¬λΌ λ°μ΄ν°λ₯Ό μ½μ§ μκ³ μΈλ±μ€λ₯Ό ν΅ν΄ μ 보λ₯Ό μ»μμμ λνλΈλ€. μ΄λ₯Ό '컀λ²λ§ μΈλ±μ€'λΌκ³ λ νλ€.)
CREATE INDEX idx_name ON phone(phone_name);
CREATE INDEX idx_name_price ON phone(phone_name, phone_price);
SHOW INDEX FROM phone;

SELECT * FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'menudb';
ALTER TABLE phone DROP INDEX idx_name;
ALTER TABLE ADD INDEX index_name(phone_name);
OPTIMIZE TABLE phone;