如何在 "CREATE TABLE" 命令中索引 MySQL 中的列

how to index a column in MySQL within "CREATE TABLE" command

有没有办法在 CREATE TABLE 命令中索引下面的非唯一电子邮件列?

而不是这个:

CREATE TABLE addresses (
    phone_number VARCHAR(12) PRIMARY KEY,
    email TINYTEXT,
);
ALTER TABLE addresses ADD INDEX (email);

像这样:

CREATE TABLE addresses (
    phone_number VARCHAR(12) PRIMARY KEY,
    email TINYTEXT INDEX,
);

这是你想要的吗?

CREATE TABLE addresses (
    phone_number VARCHAR(12) PRIMARY KEY,
    email TINYTEXT,
    INDEX ix (email)
);

默认情况下,所有索引都不是唯一的。

很容易:

CREATE TABLE addresses (
    phone_number VARCHAR(12) PRIMARY KEY,
    email TINYTEXT,
    INDEX index_email (email)
);

(Source)

您必须指定文本密钥的密钥长度。 尝试:

CREATE TABLE `addresses`(
phone_number VARCHAR(12),
email TINYTEXT,
PRIMARY KEY `phone_number`(`phone_number`) ,
KEY `email` (`email`(255)));

KEYINDEXMySQL

中的同义词

这会在 table 创建时在电子邮件列上创建名为 ix_email 的索引。

CREATE TABLE addresses (
    phone_number VARCHAR(12) PRIMARY KEY,
    email TINYTEXT,
    INDEX ix_email (email)
);