index和constraint
index:
1、index分類:單列索引(普通索引,唯一索引,主鍵索引)、組合索引、全文索引、空間索引
- 單列索引
一個索引只包含單個列,但一個表中可以有多個單列索引。 - 組合索引
表中的多個字段組合上創建的索引,使用組合索引時遵循最左前綴集合。 - 全文索引
只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT
類型字段上使用全文索引,找到該字段所屬的記錄行 - 空間索引
對空間數據類型的字段建立的索引,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、約束種類
- 非空約束(not null)
- 唯一性約束(unique)
- 主鍵約束(primary key) PK
- 外鍵約束(foreign key) FK
- 檢查約束(目前MySQL不支持、Oracle支持)