CREATE TABLE `django_comments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`content_type_id` int(11) NOT NULL,
`object_pk` longtext NOT NULL,
`site_id` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`user_name` varchar(50) NOT NULL,
`user_email` varchar(75) NOT NULL,
`user_url` varchar(200) NOT NULL,
`comment` longtext NOT NULL,
`submit_date` datetime NOT NULL,
`ip_address` char(15) DEFAULT NULL,
`is_public` tinyint(1) NOT NULL,
`is_removed` tinyint(1) NOT NULL,
PRIMARY KEY (`id`),
KEY `django_comments_content_type_id` (`content_type_id`),
KEY `django_comments_site_id` (`site_id`),
KEY `django_comments_user_id` (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
我正在迁移数据库,以便它可以与我们正在构建的Django应用程序一起使用。以上是由内置的Django评论应用程序生成的。我相信我理解除了KEY部分之外的大部分内容(我理解PRIMARY KEY的目的)。
答案 0 :(得分:2)
create table列出的MySQL文档:
| {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
[index_option] ...
因此KEY
只是index
的另一个词。
答案 1 :(得分:1)
KEY
为这些列创建索引。索引已排序并加快搜索速度。但是,每次插入/删除行时,索引都需要存储空间和维护。因此,您只索引经常搜索的列或需要特定约束的列。请注意,与PRIMARY KEY不同,常规索引不会将值强制为唯一值。
在您的表中,索引列(可能)用于与其他表的连接。连接表时,DBMS必须在其他表中查找值,如果列被索引,这会更快。
(注意:由于该表使用MyISAM,因此您将没有“真正的”外键确保完整性。为此您需要使用InnoDB和设置关系)
答案 2 :(得分:0)
KEY
是指数。
答案 3 :(得分:0)
KEY
条目指定要编制索引的一列或多列。与PRIMARY KEY
不同,如果没有其他修饰符,则不保证这些是唯一的。
答案 4 :(得分:0)
KEY是索引的同义词