本文匯總了在使用全局二級(jí)索引時(shí)的相關(guān)注意事項(xiàng)。

創(chuàng)建GSI時(shí)的注意事項(xiàng)

  • 不支持在MySQL 5.6版本的RDS上創(chuàng)建GSI。
  • 不支持在單表或廣播表上創(chuàng)建GSI。
  • 不支持在無(wú)主鍵的表上創(chuàng)建GSI。
  • 不支持在UNIQUE GSI中通過(guò)任何方式使用前綴索引。
  • 創(chuàng)建索引表時(shí)必須指定索引名。
  • 創(chuàng)建索引表時(shí)必須指定分庫(kù)或分庫(kù)加分表組合的規(guī)則,不允許僅指定分表規(guī)則或不指定任何拆分規(guī)則。
  • 索引表的INDEX列必須包含全部拆分鍵。
  • GSI名稱(chēng)不可與主表上的其它局部索引名重復(fù)。
  • GSI定義子句中,索引列與覆蓋列不可重復(fù)。
  • 索引表默認(rèn)包含主表的全部主鍵和拆分鍵,如果沒(méi)有顯式包含在索引列中,默認(rèn)添加到覆蓋列。
  • 對(duì)主表中的每個(gè)局部索引,如果引用的所有列均包含在索引表中,默認(rèn)添加該局部索引到索引表。
  • 對(duì)GSI的每個(gè)索引列,如果沒(méi)有已經(jīng)存在的索引,默認(rèn)單獨(dú)創(chuàng)建一個(gè)索引。
  • 對(duì)包含多個(gè)索引列的GSI,默認(rèn)創(chuàng)建一個(gè)聯(lián)合局部索引,包含所有索引列。
  • 索引定義中,索引列的length參數(shù)僅用于在索引表拆分鍵上創(chuàng)建局部索引。
  • 建表后創(chuàng)建GSI時(shí),會(huì)在GSI創(chuàng)建結(jié)束時(shí)自動(dòng)進(jìn)行數(shù)據(jù)校驗(yàn),只有通過(guò)校驗(yàn),創(chuàng)建GSI的DDL語(yǔ)句才能執(zhí)行成功。
    說(shuō)明 您也可以使用 CHECK GLOBAL INDEX對(duì)索引數(shù)據(jù)進(jìn)行校驗(yàn)或訂正。

ALTER TABLE時(shí)的注意事項(xiàng)

  • 下表匯總了使用ALTER TABLE語(yǔ)句變更列的支持情況。
    語(yǔ)句 是否支持變更主表拆分鍵 是否支持變更主表主鍵(也即索引表主鍵) 是否支持變更本地唯一索引列 是否支持變更索引表拆分鍵 是否支持變更Unique Index列 是否支持變更Index列 是否支持變更Covering列
    ADD COLUMN 無(wú)該場(chǎng)景 不支持 無(wú)該場(chǎng)景 無(wú)該場(chǎng)景 無(wú)該場(chǎng)景 無(wú)該場(chǎng)景 無(wú)該場(chǎng)景
    ALTER COLUMN SET DEFAULT和ALTER COLUMN DROP DEFAULT 不支持 不支持 支持 不支持 不支持 不支持 不支持
    CHANGE COLUMN 不支持 不支持 支持 不支持 不支持 不支持 不支持
    DROP COLUMN 不支持 不支持 僅當(dāng)唯一鍵中只有1列時(shí)支持 不支持 不支持 不支持 不支持
    MODIFY COLUMN 不支持 不支持 支持 不支持 不支持 不支持 不支持
    說(shuō)明
    • 考慮到全局二級(jí)索引的穩(wěn)定性和性能情況,目前禁止直接使用DROP COLUMN命令刪除全局二級(jí)索引中的列。如需刪除全局二級(jí)索引中的某些列,您可以先使用DROP INDEX刪除對(duì)應(yīng)的全局二級(jí)索引,再重新創(chuàng)建一個(gè)新的二級(jí)索引。
    • 以上對(duì)列的分類(lèi)存在重疊(如Index列包含索引表拆分鍵,Covering列包含主表拆分鍵、主鍵以及指定的列),若存在支持情況沖突情況,不支持的優(yōu)先級(jí)高于支持。
  • 下表匯總了使用ALTER TABLE語(yǔ)句變更索引的支持情況。
    語(yǔ)句 是否支持
    ALTER TABLE ADD PRIMARY KEY 支持
    ALTER TABLE ADD [UNIQUE/FULLTEXT/SPATIAL/FOREIGN] KEY 支持,您可以同時(shí)在主表和索引表上添加局部索引,索引名稱(chēng)不可與GSI重復(fù)。
    ALTER TABLE ALTER INDEX index_name {VISIBLE | INVISIBLE} 支持,僅在主表執(zhí)行(禁止變更GSI狀態(tài))。
    ALTER TABLE {DISABLE | ENABLE} KEYS 支持,僅在主表執(zhí)行(禁止變更GSI狀態(tài))。
    ALTER TABLE DROP PRIMARY KEY 禁止
    ALTER TABLE DROP INDEX 僅支持刪除普通索引或全局二級(jí)索引。
    ALTER TABLE RENAME INDEX 禁止
    說(shuō)明 考慮到全局二級(jí)索引的穩(wěn)定性和性能情況,目前禁止直接使用ALTER TABLE RENAME INDEX命令重命名全局二級(jí)索引。如需修改全局二級(jí)索引名,您可以先使用 DROP INDEX刪除全局二級(jí)索引,再重新創(chuàng)建使用新名稱(chēng)的二級(jí)索引。

變更索引表時(shí)的注意事項(xiàng)

  • 不支持在索引表上執(zhí)行DDL、DML語(yǔ)句。
  • 不支持帶有NODE HINT的DML語(yǔ)句更新主表、索引表。

使用其他DDL時(shí)的注意事項(xiàng)

語(yǔ)句 是否支持
DROP TABLE 支持
DROP INDEX 支持
TRUNCATE TABLE 不支持
RENAME TABLE 不支持
ALTER TABLE RENAME 不支持
說(shuō)明
  • 考慮主表與索引表的數(shù)據(jù)一致性,目前禁止執(zhí)行TRUNCATE TABLE語(yǔ)句 。如需清空主表與索引表數(shù)據(jù),您可以使用DELETE語(yǔ)句刪除對(duì)應(yīng)的數(shù)據(jù)。
  • 考慮到全局二級(jí)索引的穩(wěn)定性和性能情況,目前禁止直接使用RENAME TABLE或ALTER TABLE RENAME命令重命名全局二級(jí)索引。如需修改全局二級(jí)索引名,您可以先使用DROP INDEX刪除全局二級(jí)索引,修改表名后再重新創(chuàng)建新的二級(jí)索引。

使用DML語(yǔ)句時(shí)的注意事項(xiàng)