抱歉新手问题。 我以下列方式定义了一个表
CREATE TABLE `class1` (
`name` varchar(20) NOT NULL,
`familyname` varchar(20) NOT NULL,
`id` int(11) DEFAULT NULL,
KEY `class1` (`name`,`familyname`));
你能解释一下我在这里有一个名字和姓氏作为关键的区别。
我必须在表格中输入值并运行查询但我无法理解它给了我什么?如果我没有将名称和姓氏定义为键,我会得到相同的结果。
答案 0 :(得分:2)
密钥(也称为索引)不会更改查询结果,但有时可以使查询更快。
如果您有兴趣,可以阅读不同类型的密钥here。
答案 1 :(得分:1)
mysql中create table语法中的KEY关键字是INDEX的同义词,将在'name','familyname'列上创建索引。
这不会影响表上的任何约束,但是当在select语句的where子句中使用'name'和'familyname'列时,会更快地对表进行查询。
如果要在这两列上创建主键,则应使用:
CREATE TABLE `class1` (
`name` varchar(20) NOT NULL,
`familyname` varchar(20) NOT NULL,
`id` int(11) DEFAULT NULL,
PRIMARY KEY (`name`,`familyname`));
这将阻止您插入具有相同“name”和“familyname”组合的多行。
答案 2 :(得分:0)
如果你想从你的表中获取数据,基于键或索引字段(如上所述),你的查询将执行得更快,因为该表将保留关于这些值的索引。
但是,这也存在不利因素。添加不需要的索引会对您的性能产生负面影响。总而言之:索引可以加速您的数据库,但在添加它们之前总是检查它们是否真的需要。