如何在MySQL中删除此索引?

时间:2009-12-31 07:28:24

标签: mysql indexing

这是以这种方式创建的:

create table listings(
    id integer unsigned NOT NULL AUTO_INCREMENT,
    accountId  integer unsigned default null,
    title varchar(300) not null,
    country integer unsigned,
    region integer unsigned,
    type integer unsigned,
    price integer,
    unit varchar(20) not null,
    priceUSD decimal(12,2),
    bedrooms integer unsigned,
    thumbnail varchar(100) default null,
    keywords text,
    created datetime,
    deleted boolean default 0,
    fulltext index (keywords),
    PRIMARY KEY (id)
) engine=MyISAM;

如何删除没有名称的全文索引?

如果未命名的索引是:fulltext index (title ,keywords)

,该怎么办?

4 个答案:

答案 0 :(得分:79)

ALTER TABLE listings DROP INDEX keywords;

答案 1 :(得分:34)

mysql客户端中运行此命令:

mysql> SHOW CREATE TABLE listings;

它将显示表格的DDL,包括索引的系统指定名称

答案 2 :(得分:20)

$userOrders = Orders::where([ 'user_id' => $request->user()->id ]) ->select(['id']) ->with('orders.items') // <<<< oops nested relations ->get();

OR

ALTER TABLE {your_table_name} DROP INDEX {your_index_name}

答案 3 :(得分:0)

您还可以使用SHOW INDEX语法获取表索引信息。

SHOW INDEX FROM listings;

此外,当您不为索引提供名称时,MySQL将根据被索引的列自动为索引提供名称。

对于fulltext index (keywords),MySQL最有可能将索引命名为keywords

对于fulltext index (title ,keywords),MySQL最有可能将索引命名为title

我说“最有可能”是因为,如果已经有一个名为keywordstitle的索引,MySQL会用别的名字命名。