mysql srid_mysql8 参考手册--索引优化
主鍵優化
表的主鍵表示您在最重要的查詢中使用的一列或一組列。它具有關聯的索引,可提高查詢性能。查詢性能可以從NOT NULL優化中受益,因為它不能包含任何NULL值。使用InnoDB存儲引擎,可以對表數據進行物理組織,以根據一個或多個主鍵列進行超快速查找和排序。
如果您的表又大又重要,但是沒有明顯的列或一組列用作主鍵,則可以創建一個單獨的列,并使用自動增量值作為主鍵。當您使用外鍵聯接表時,這些唯一的ID可用作指向其他表中相應行的指針。
空間索引優化
MySQL允許SPATIAL在NOT NULL幾何值列上創建索引 (請參見 第11.4.10節“創建空間索引”)。優化器檢查SRID索引列的屬性,以確定用于比較的空間參考系統(SRS),并使用適合于SRS的計算。(在MySQL 8.0之前,優化器SPATIAL使用笛卡爾計算對索引值進行比較;如果該列包含具有非笛卡爾SRID的值,則此類操作的結果是不確定的。)
為了使比較正常工作,SPATIAL索引中的每一列都 必須受SRID限制。也就是說,列定義必須包括一個顯式 SRID屬性,并且所有列值都必須具有相同的SRID。
優化器SPATIAL僅考慮針對SRID限制的列的索引:
1、限于笛卡爾SRID的列上的索引啟用笛卡爾邊界框計算。
2、限于地理SRID的列上的索引可啟用地理邊界框計算。
優化器將忽略SPATIAL沒有SRID屬性(因此不受SRID限制)的列上的索引。MySQL仍然維護此類索引,如下所示:
1、他們對表的修改更新(INSERT, UPDATE, DELETE,等等)。即使列可能包含笛卡爾和地理值的混合,也會像索引是笛卡爾索引一樣進行更新。
2、它們僅是為了向后兼容而存在(例如,能夠在MySQL 5.7中執行轉儲并在MySQL 8.0中還原)。因為SPATIAL不受SRID限制的列上的索引
對優化器沒有用,所以應該修改每個這樣的列:
1、驗證列中的所有值都具有相同的SRID。要確定幾何列中包含的SRID col_name,請使用以下查詢:
SELECT DISTINCT ST_SRID(col_name) FROM tbl_name;
2、如果查詢返回多行,則該列包含SRID的混合。在這種情況下,請修改其內容,以便所有值都具有相同的SRID:
(1)重新定義該列以具有顯式 SRID屬性。
(2)重新創建SPATIAL索引。
總結
以上是生活随笔為你收集整理的mysql srid_mysql8 参考手册--索引优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Struts 2框架创建的第一个项目
- 下一篇: linux cmake编译源码,linu