Kiểu dữ liệu không gian trong MySQL là gì?

Hoạt động tìm kiếm trong cơ sở dữ liệu phi không gian có thể được tối ưu hóa bằng cách sử dụng chỉ mục

ALTER TABLE geom ADD SPATIAL INDEX[g];
1. Điều này cũng đúng với cơ sở dữ liệu không gian. Với sự trợ giúp của rất nhiều phương pháp lập chỉ mục đa chiều đã được thiết kế trước đây, có thể tối ưu hóa các tìm kiếm không gian. Điển hình nhất trong số này là

MySQL sử dụng R-Tree với phép chia bậc hai cho các chỉ mục

ALTER TABLE geom ADD SPATIAL INDEX[g];
1 trên các cột không gian. Chỉ mục
ALTER TABLE geom ADD SPATIAL INDEX[g];
1 được tạo bằng cách sử dụng MBR của hình học. Đối với hầu hết các hình học, MBR là hình chữ nhật tối thiểu bao quanh hình học. Đối với một chuỗi ngang hoặc dọc, MBR là một hình chữ nhật được suy biến thành chuỗi. Đối với một điểm, MBR là một hình chữ nhật suy biến thành điểm

Cũng có thể tạo các chỉ mục bình thường trên các cột không gian. Trong chỉ mục không phải ______0_______1, bạn phải khai báo tiền tố cho bất kỳ cột không gian nào ngoại trừ cột

ALTER TABLE geom ADD SPATIAL INDEX[g];
5

ALTER TABLE geom ADD SPATIAL INDEX[g];
6 hỗ trợ cả chỉ mục
ALTER TABLE geom ADD SPATIAL INDEX[g];
1 và không phải ______0_______1. Các công cụ lưu trữ khác hỗ trợ các chỉ mục không ____0_______1, như được mô tả trong

20. 6. 1. Tạo chỉ mục không gian

MySQL có thể tạo các chỉ mục không gian bằng cách sử dụng cú pháp tương tự như cú pháp để tạo các chỉ mục thông thường, nhưng được mở rộng bằng từ khóa

ALTER TABLE geom ADD SPATIAL INDEX[g];
1. Hiện tại, các cột trong chỉ mục không gian phải được khai báo
CREATE SPATIAL INDEX sp_index ON geom [g];
2. Các ví dụ sau minh họa cách tạo chỉ mục không gian

  • Với

    CREATE SPATIAL INDEX sp_index ON geom [g];
    
    3

    CREATE TABLE geom [g GEOMETRY NOT NULL, SPATIAL INDEX[g]];
    
  • Với

    CREATE SPATIAL INDEX sp_index ON geom [g];
    
    4

    ALTER TABLE geom ADD SPATIAL INDEX[g];
    
  • Với

    CREATE SPATIAL INDEX sp_index ON geom [g];
    
    0

    CREATE SPATIAL INDEX sp_index ON geom [g];
    

Đối với bảng

ALTER TABLE geom ADD SPATIAL INDEX[g];
6,
CREATE SPATIAL INDEX sp_index ON geom [g];
7 tạo chỉ mục cây R. Đối với các công cụ lưu trữ hỗ trợ lập chỉ mục phi không gian của các cột không gian, công cụ tạo chỉ mục cây B. Chỉ mục cây B trên các giá trị không gian sẽ hữu ích cho việc tra cứu giá trị chính xác, nhưng không hữu ích cho việc quét phạm vi

Để biết thêm thông tin về lập chỉ mục các cột không gian, hãy xem

Để loại bỏ các chỉ mục không gian, hãy sử dụng

CREATE SPATIAL INDEX sp_index ON geom [g];
4 hoặc
ALTER TABLE geom DROP INDEX g;
0

  • Với

    CREATE SPATIAL INDEX sp_index ON geom [g];
    
    4

    ALTER TABLE geom DROP INDEX g;
    
  • Với

    ALTER TABLE geom DROP INDEX g;
    
    0

    DROP INDEX sp_index ON geom;
    

Thí dụ. Giả sử rằng một bảng

ALTER TABLE geom DROP INDEX g;
3 chứa hơn 32.000 hình học, được lưu trữ trong cột
ALTER TABLE geom DROP INDEX g;
4 thuộc loại
ALTER TABLE geom DROP INDEX g;
5. Bảng này cũng có một cột
ALTER TABLE geom DROP INDEX g;
6
ALTER TABLE geom DROP INDEX g;
7 để lưu trữ các giá trị ID đối tượng

mysql> DESCRIBE geom;
+-------+----------+------+-----+---------+----------------+
| Field | Type     | Null | Key | Default | Extra          |
+-------+----------+------+-----+---------+----------------+
| fid   | int[11]  |      | PRI | NULL    | auto_increment |
| g     | geometry |      |     |         |                |
+-------+----------+------+-----+---------+----------------+
2 rows in set [0.00 sec]

mysql> SELECT COUNT[*] FROM geom;
+----------+
| count[*] |
+----------+
|    32376 |
+----------+
1 row in set [0.00 sec]

Để thêm chỉ mục không gian trên cột

ALTER TABLE geom DROP INDEX g;
4, hãy sử dụng câu lệnh này

mysql> ALTER TABLE geom ADD SPATIAL INDEX[g];
Query OK, 32376 rows affected [4.05 sec]
Records: 32376  Duplicates: 0  Warnings: 0

20. 6. 2. Sử dụng chỉ mục không gian

Trình tối ưu hóa điều tra xem liệu các chỉ mục không gian có sẵn có thể được tham gia vào việc tìm kiếm các truy vấn sử dụng một chức năng chẳng hạn như hoặc trong mệnh đề

DROP INDEX sp_index ON geom;
1. Truy vấn sau tìm tất cả các đối tượng trong hình chữ nhật đã cho

mysql> SET @poly =
    -> 'Polygon[[30000 15000,31000 15000,31000 16000,30000 16000,30000 15000]]';
mysql> SELECT fid,AsText[g] FROM geom WHERE
    -> MBRContains[GeomFromText[@poly],g];
+-----+---------------------------------------------------------------+
| fid | AsText[g]                                                     |
+-----+---------------------------------------------------------------+
|  21 | LINESTRING[30350.4 15828.8,30350.6 15845,30333.8 15845,30 .. |
|  22 | LINESTRING[30350.6 15871.4,30350.6 15887.8,30334 15887.8, .. |
|  23 | LINESTRING[30350.6 15914.2,30350.6 15930.4,30334 15930.4, .. |
|  24 | LINESTRING[30290.2 15823,30290.2 15839.4,30273.4 15839.4, .. |
|  25 | LINESTRING[30291.4 15866.2,30291.6 15882.4,30274.8 15882. .. |
|  26 | LINESTRING[30291.6 15918.2,30291.6 15934.4,30275 15934.4, .. |
| 249 | LINESTRING[30337.8 15938.6,30337.8 15946.8,30320.4 15946. .. |
|   1 | LINESTRING[30250.4 15129.2,30248.8 15138.4,30238.2 15136. .. |
|   2 | LINESTRING[30220.2 15122.8,30217.2 15137.8,30207.6 15136, .. |
|   3 | LINESTRING[30179 15114.4,30176.6 15129.4,30167 15128,3016 .. |
|   4 | LINESTRING[30155.2 15121.4,30140.4 15118.6,30142 15109,30 .. |
|   5 | LINESTRING[30192.4 15085,30177.6 15082.2,30179.2 15072.4, .. |
|   6 | LINESTRING[30244 15087,30229 15086.2,30229.4 15076.4,3024 .. |
|   7 | LINESTRING[30200.6 15059.4,30185.6 15058.6,30186 15048.8, .. |
|  10 | LINESTRING[30179.6 15017.8,30181 15002.8,30190.8 15003.6, .. |
|  11 | LINESTRING[30154.2 15000.4,30168.6 15004.8,30166 15014.2, .. |
|  13 | LINESTRING[30105 15065.8,30108.4 15050.8,30118 15053,3011 .. |
| 154 | LINESTRING[30276.2 15143.8,30261.4 15141,30263 15131.4,30 .. |
| 155 | LINESTRING[30269.8 15084,30269.4 15093.4,30258.6 15093,30 .. |
| 157 | LINESTRING[30128.2 15011,30113.2 15010.2,30113.6 15000.4, .. |
+-----+---------------------------------------------------------------+
20 rows in set [0.00 sec]

Sử dụng

DROP INDEX sp_index ON geom;
2 để kiểm tra cách thực hiện truy vấn này

mysql> SET @poly =
    -> 'Polygon[[30000 15000,31000 15000,31000 16000,30000 16000,30000 15000]]';
mysql> EXPLAIN SELECT fid,AsText[g] FROM geom WHERE
    -> MBRContains[GeomFromText[@poly],g]\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: geom
         type: range
possible_keys: g
          key: g
      key_len: 32
          ref: NULL
         rows: 50
        Extra: Using where
1 row in set [0.00 sec]

Kiểm tra điều gì sẽ xảy ra nếu không có chỉ mục không gian

mysql> SET @poly =
    -> 'Polygon[[30000 15000,31000 15000,31000 16000,30000 16000,30000 15000]]';
mysql> EXPLAIN SELECT fid,AsText[g] FROM g IGNORE INDEX [g] WHERE
    -> MBRContains[GeomFromText[@poly],g]\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: geom
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 32376
        Extra: Using where
1 row in set [0.00 sec]

Việc thực thi câu lệnh

DROP INDEX sp_index ON geom;
3 mà không có chỉ mục không gian mang lại kết quả tương tự nhưng khiến thời gian thực hiện tăng từ 0. 00 giây đến 0. 46 giây

Kiểu dữ liệu không gian trong SQL là gì?

SQL Server hỗ trợ hai kiểu dữ liệu không gian. kiểu dữ liệu hình học và kiểu dữ liệu địa lý . Loại hình học biểu thị dữ liệu trong hệ tọa độ Euclide [phẳng]. Loại địa lý biểu thị dữ liệu trong hệ tọa độ tròn trái đất.

Các kiểu dữ liệu không gian là gì?

Dữ liệu không gian có hai loại tùy theo kỹ thuật lưu trữ, đó là dữ liệu raster và dữ liệu vectơ .

Dữ liệu không gian với các ví dụ là gì?

Có thể thấy một ví dụ phổ biến về dữ liệu không gian trong bản đồ đường đi . Bản đồ đường đi là một đối tượng hai chiều chứa các điểm, đường và đa giác có thể biểu thị các thành phố, đường và ranh giới chính trị như tiểu bang hoặc tỉnh. Bản đồ đường đi là một hình ảnh trực quan của thông tin địa lý.

Làm cách nào để tạo cơ sở dữ liệu không gian trong MySQL?

Sử dụng câu lệnh CREATE TABLE để tạo bảng có cột không gian. TẠO BẢNG geom [g HÌNH HỌC];
Sử dụng câu lệnh ALTER TABLE để thêm hoặc xóa một cột không gian vào hoặc từ một bảng hiện có. ALTER TABLE geom ADD pt POINT;

Chủ Đề