mySQL 创建 TABLE 唯一索引

mySQL CREATE TABLE UNIQUE INDEX

早上好。 我正在阅读一些在 mySQL 中创建表的示例,但我不理解以下代码的最后一条语句:CREATE TABLE 'company_test', 'employee'( ... UNIQUE INDEX 'department_id_UNIQUE' ('department_id' ASC) VISIBLE) 这是什么 UNIQUE INDEX 'department_id_UNIQUE ('department_id' ASC)VISIBLE做什么?我到处搜索可以解释这一点,但我只能找到在 CREATE TABLE 之外使用 CREATE INDEX 的示例,索引的作用是什么,有人可以详细解释该语句吗?如果你能给我一些关于那个的文件,我将不胜感激。

1.这个语句有什么作用? 唯一索引 'department_id_UNIQUE ('department_id' ASC) VISIBLE

在您的示例中,此语句在员工 table 的 department_id 列上创建了唯一索引。 索引可以在 table 创建期间创建,也可以在创建 table 之后创建。 MySQL 创建 table 语法:create table table 创建后创建索引:create index

2。索引有什么作用? 索引以写入 performance.In 为代价提高了读取性能,您示例连同索引一起在列上创建了唯一约束,这将防止 department_id 字段的重复值。 This post 详细解释了数据库索引的工作原理。

UNIQUE INDEX 'department_id_UNIQUE ('department_id' ASC) VISIBLE

UNIQUE -- an index BTree is built and maintained; a uniqueness constraint is established.
INDEX -- optional (redundant) syntax
'...' -- optional arbitrary name for this index.  A default will be provided if left out.
(...) -- The column(s) in the index.  The combination is unique; the BTree is ordered by them.
ASC -- Ascending (as opposed to DESC: Descending)
VISIBLE -- below

VISIBLE 是新关键字。一些产品解决了这个问题;其他一些产品将其视为语法错误。如果这是一个问题,只需删除该词即可。

VISIBLEINVISIBLE的目的就是这样。 CREATEingDROPping 索引可能是一项代价高昂的操作。如果要删除索引(以节省磁盘 space),将其设置为 INVISIBLE 以查看是否有任何查询显着减慢可能是有利的。这可能会告诉您索引 所需要的。然后你可以快速地再次VISIBLE。否则你可以 DROP 它。

VISIBLE是默认值;把它关掉是可以的。