index and constraint:索引和約束

index和constraint

index:

1、index分類:單列索引(普通索引,唯一索引,主鍵索引)、組合索引、全文索引、空間索引
  1. 單列索引
    一個索引只包含單個列,但一個表中可以有多個單列索引。
  2. 組合索引
    表中的多個字段組合上創建的索引,使用組合索引時遵循最左前綴集合。
  3. 全文索引
    只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT類型字段上使用全文索引,找到該字段所屬的記錄行
  4. 空間索引
    對空間數據類型的字段建立的索引,MySQL中的空間數據類型有四種,GEOMETRY、POINT、LINESTRING、POLYGON。在創建空間索引時,使用SPATIAL關鍵字。要求,引擎爲MyISAM,創建空間索引的列,必須將其聲明爲NOT NULL

List item

單列索引

區別:
1、CREATE TABLE時

CREATE TABLE IF NOT EXISTS `ppserver`.`eventTable`(
   `userId`         INT UNSIGNED      NOT null,
   `taskId`         INT UNSIGNED      NOT null,
   unique index(`userId` ,`taskId`,`date`),
   PRIMARY KEY ( `eventId`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE Persons   
(
Id_P int NOT NULL,   
LastName varchar(255) NOT NULL,   
City varchar(255),   
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)   
)

2、
生效規則:

  • 約束是在事務結束的時候執行;
  • 索引是立即執行,而不管事務狀態或引擎的日誌模式。

3、創建索引

  • 創建唯一性約束,自動創建了和約束名一樣的唯一性索引
  • 創建check約束,不會產生索引
  • 創建外鍵約束,不會產生索引
2、約束種類
  1. 非空約束(not null)
  2. 唯一性約束(unique)
  3. 主鍵約束(primary key) PK
  4. 外鍵約束(foreign key) FK
  5. 檢查約束(目前MySQL不支持、Oracle支持)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章