是什么决定是否为SQL列编写MUL

时间:2017-10-17 13:56:46

标签: mysql

如果我运行Lemma obv2(X : Set) : exists f : X -> X, forall x, f x = x. eexists; tauto. Qed. ,我会:

SHOW COLUMNS FROM table_name

查看+-----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+----------------+ | convo_id | int(11) | NO | PRI | NULL | auto_increment | | client_convo_id | varchar(255) | NO | | NULL | | | user_id | int(11) | NO | MUL | NULL | | +-----------------+--------------+------+-----+---------+----------------+ - 列,很清楚Key的含义,即主键。根据我的研究,PRI代表多个,这意味着我可以在此表中使用相同MUL的多个实例。但是user_id字段怎么样?它在client_convo_id - 列中没有任何价值。这是什么意思?我怀疑表中可能有多个条目具有相同的Key。那么,为什么client_convo_idclient_convo_id列中没有MUL

1 个答案:

答案 0 :(得分:3)

MUL表示该字段是非唯一索引的一部分,如下所示: Another question

client_convo_id的Key列中没有任何内容,因为该字段没有附加索引。

并非SQL中的所有列都有索引。只有一个用于选择(在where或join子句中)通常被编入索引,因此查询运行得更快。这是关于此事的official documentation