R-Tree index
MySQLμλ κ³΅κ° μΈλ±μ€(Spatial Index)κ° μ‘΄μ¬νλ€. κ³΅κ° μΈλ±μ€λ R-Tree μΈλ±μ€ μκ³ λ¦¬μ¦μ μ΄μ©ν΄μ 2μ°¨μμ λ°μ΄ν°λ₯Ό μΈλ±μ±νκ³ κ²μνλ λͺ©μ μ μΈλ±μ€μ΄λ€.
κΈ°λ³Έμ μΈ λ΄λΆ λ©μ»€λμ¦μ B-Treeμ ν‘μ¬νλ°, B-Treeλ μΈλ±μ€λ₯Ό ꡬμ±νλ 컬λΌμ κ°μ΄ 1μ°¨μ μ€μΉΌλΌμ΄μ§λ§, R-Tree μΈλ±μ€λ 2μ°¨μμ κ³΅κ° κ°λ
κ°μ΄λ€.
μ€λ§νΈν°μ΄ λμ€νλλ©΄μ GIS, GPS κΈ°λ°μ μλΉμ€κ° νμ₯λκ³ μλ€. μ΄λ¬ν μμΉ κΈ°λ°μ μλΉμ€λ₯Ό ꡬννλ λ°©λ²μ λ§μ§λ§ MySQLμ κ³΅κ° νμ₯(Spatial Extenstions)μ μ΄μ©νλ©΄ κ°λ¨νκ² κ΅¬νν μ μλ€.
MySQL κ³΅κ° νμ₯μλ μΈ κ°μ§ κΈ°λ₯μ΄ ν¬ν¨λΌ μλ€.
κ³΅κ° λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ λ°μ΄ν° νμ
κ³΅κ° λ°μ΄ν°μ κ²μμ μν κ³΅κ° μΈλ±μ€(R-Tree (Range Tree) μκ³ λ¦¬μ¦)
κ³΅κ° λ°μ΄ν°μ μ°μ° ν¨μ(거리 or ν¬ν¨ κ΄κ³μ μ²λ¦¬) μ¬κΈ°μλ R-Tree μκ³ λ¦¬μ¦μ λν΄μλ§ νμ΅νλ κ²μ λͺ©νλ‘ νλ€.
ꡬ쑰 λ° νΉμ±
MySQLμ κ³΅κ° μ 보μ μ μ₯κ³Ό κ²μμ μν΄ μ¬λ¬ κ°μ§ κΈ°ννμ λν(Geometry) μ 보λ₯Ό κ΄λ¦¬ν μ μλ λ°μ΄ν° νμ μ μ 곡νλ€. MySQLμμλ ν¬κ² λ κ°μ§ μΉ΄ν κ³ λ¦¬λ‘ λλλ€.
λ¨μΌ κΈ°ννμ μ μ₯νλ νμ :
Point, Line, Polygon, Geometry
μ¬λ¬ κΈ°ννμ κ°μ 컬λ μ μ μ μ₯νλ 컬λ μ νμ :
Multi-Point, Multi-Line, Multi-Polygon, GeometryCollection
λνμ μΌλ‘ MySQLμμ μ§μνλ κ³΅κ° λ°μ΄ν° νμ (Spatial Data Type)μ μλμ κ°λ€.

Goemetry νμ μ λͺ¨λ μ’ λ₯μ κ³΅κ° λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ μΌλ°μ μΈ νμ μΌλ‘, κΈ°νν κ°λ μ μ₯ν μ μλ€. μ¦, POINT, LINE, POLYGON κ°μ²΄λ μ μ₯ν μ μλ€. (= GeomCollectionλ λμΌ)
MBR(Minimum Bounding Rectangle): μ΅μ κ²½κ³ μ¬κ°ν
κ³΅κ° μ 보 κ²μμ μν R-Treeλ₯Ό μ΄ν΄νκΈ° μν΄μλ MBR κ°λ μ μμμΌ νλ€. (ν΅μ¬μ΄λ€!)
MBRμ νΉμ λνμ κ°μΈλ μ΅μ ν¬κΈ°μ μ¬κ°νμ μλ―Ένλ€. μ¬κΈ°μ βνΉμ λνβμ MySQLμμ μ 곡νλ κ³΅κ° λ°μ΄ν° νμ
μΌλ‘, κΈ°ννμ κ°μ²΄λ₯Ό μλ―Ένλ€.
μλ κ·Έλ¦Όμ ν΅ν΄ νμΈν΄ 보μ.


R-Tree μλ£κ΅¬μ‘°λ B-Tree μ ν‘μ¬ν ννλ‘ κ΅¬μ±λμ΄μλ€. λ°λΌμ λνμ΄ μ μ₯λμ λ λ§λ€μ΄μ§λ μΈλ±μ€ ꡬ쑰λ₯Ό μ΄ν΄ν΄μΌ νλ€. λνμ λ λ²¨λ‘ λλ 보μ.
μ΅μμ λ 벨: X, Y
μ΅νμ λ 벨: A, B, C, D, E
μ΅μμ MBRμ R-Treeμ λ£¨νΈ λ Έλμ μ μ₯λλ μ 보μ΄λ©°, μ΅νμ λ 벨μ 리ν λ Έλκ° λλ€.
λ, μ€κ° λ λ²¨μ΄ μ‘΄μ¬νλ€λ©΄ κ·Έ MBRμ λΈλμΉ λ Έλκ° λλ€.
R-Tree μΈλ±μ€μ μ©λ
R-Treeλ MBR μ 보λ₯Ό μ΄μ©ν΄ B-Tree ννλ‘ μΈλ±μ€λ₯Ό ꡬμΆνλ―λ‘ Rectangleμ βRβκ³Ό B-Treeλ₯Ό μμ΄μ μ΄λ¦μ λΆμμΌλ©°, 곡κ°(Spatial) μΈλ±μ€λΌκ³ νλ€. μΌλ°μ μΌλ‘ WGS84(GPS) κΈ°μ€μ μλ, κ²½λ μ’ν μ μ₯μ μ£Όλ‘ μ¬μ©λλ€.
λ, μ κ·Έλ¦Όκ³Ό κ°μ΄ R-Treeλ λνμ ν¬ν¨ κ΄κ³λ₯Ό μ΄μ©ν΄ λ§λ μΈλ±μ€μ΄λ€. ST_Contains() λλ ST_Within() λ±κ³Ό κ°μ ν¬ν¨ κ΄κ³λ₯Ό λΉκ΅νλ ν¨μλ‘ κ²μμ μννλ κ²½μ°μλ§ μΈλ±μ€λ₯Ό μ΄μ©ν μ μλ€.
λνμ μΌλ‘λ βνμ¬ μ¬μ©μμ μμΉλ‘λΆν° λ°κ²½ 5km μ΄λ΄μ μμμ κ²μβ λ±κ³Ό κ°μ κ²μμ μ¬μ©ν μ μλ€.

κ·Έλ¦Ό 8.24μμ βPβκ° κΈ°μ€μ μ΄λ€. κΈ°μ€μ μΌλ‘λΆν° λ°κ²½ 5km μ΄λ΄μ μμΉ(μ )λ€μ κ²μνλ €λ©΄ μ¬κ° μ μ μ μμμ ν¬ν¨λλ(ST_Contains() λλ ST_Within() ν¨μ μ΄μ©) μ λ€μ κ²μνλ©΄ λλ€.
μ¬κΈ°μ contains(), within() μ°μ°μ μ¬κ°ν λ°μ€μ κ°μ λ€κ°ν(Polygon)μΌλ‘ μ°μ°ν μ μμΌλ―λ‘, λ°κ²½ 5kmλ₯Ό 그리λ μμ ν¬ν¨νλ μ΅μ μ¬κ°ν(MBR)μΌλ‘ ν¬ν¨ κ΄κ³λ₯Ό μννλ€.
μ βP6βμ 5km μ΄μ λ¨μ΄μ Έ μμ§λ§ μ΅μ μ¬κ°ν λ΄μλ ν¬ν¨λλ€.
μ¬κΈ°μ μ βP6βμ μ μΈνκ³ κ²°κ³Όλ₯Ό μ‘°ννλ €λ©΄ μ‘°κΈ λ³΅μ‘ν λΉκ΅κ° νμνλ€. P6μ κ²°κ³Όμ ν¬ν¨μν¨λ€λ©΄ λ€μ μΏΌλ¦¬λ§ μννλ κ²μ΄ μ’λ€.
contains()μ within() ν¨μλ κ±°μ λμΌν λΉκ΅λ₯Ό μννμ§λ§ λ ν¨μμ νλΌλ―Έν°λ λ°λλ‘ μ¬μ©ν΄μΌ νλ€.
contains()μ 첫 λ²μ§Έ νλΌλ―Έν°λ ν¬ν¨ κ²½κ³λ₯Ό κ°μ§ λνμ λͺ μνκ³ λ λ²μ§Έ νλΌλ―Έν°λ ν¬ν¨λλ λν(λλ μ μ’ν)μ λͺ μν΄μΌ νλ€.
within()μ κ·Έ λ°λμ΄λ€.
μ P6μ μ μΈμν€λ €λ©΄ contains() λΉκ΅ κ²°κ³Όμ ST_Distance_Sphere()ν¨μλ₯Ό μ΄μ©ν΄ νλ² λ νν°λ§ν΄μΌ νλ€.
Last updated