MySQL中如何设置唯一索引,联合索引?
1.UNIQUE 关键字建唯一索引
mysql> CREATE TABLE `wb_blog` (
-> `id` smallint(8) unsigned NOT NULL,
-> `catid` smallint(5) unsigned NOT NULL DEFAULT '0',
-> `title` varchar(80) NOT NULL DEFAULT '',
-> `content` text NOT NULL,
-> PRIMARY KEY (`id`),
-> UNIQUE KEY `catename` (`catid`)
-> ) ;
图片来源:网络
如果建好表了,可以用以下语句建
mysql> CREATE UNIQUE INDEX catename ON wb_blog(catid);
2.联合索引
ALTER TABLE `tasks`
ADD INDEX `testabc` (`title`, `created`) ;
3联合唯一索引(假设有这个需求,在同一天内不能建两个tiltle一样的任务)
ALTER TABLE `tasks`
ADD UNIQUE INDEX `testabc` (`title`, `created`) ;
数据库建索引的科学性事关数据库性能,索引也不是越多越好。
MySQL中索引多还是索引少好?
在 MySQL 中,索引的数量并不是越多越好,也不是越少越好,需要根据具体情况进行权衡。
索引过多存在一些弊端:
1. 维护成本增加:过多的索引会导致在数据插入、更新和删除操作时需要更多的时间和资源来维护这些索引。
2. 占用更多存储空间:大量索引会占用较多的磁盘空间。
索引过少可能会导致查询效率低下,难以快速定位到所需数据。
一般来说,应该根据实际的数据访问模式和查询需求来合理地设计和创建索引。只在经常用于查询条件、关联字段等关键位置创建必要的索引,以在提高查询性能和避免过度的维护负担之间找到平衡。
mysql里,索引和主键的区别?
主键(primary key) 能够唯一标识表中某一行的属性或属性组。
一个表只能有一个主键,但可以有多个候选索引。主键常常与外键构成参照完整性约束,防止出现数据不一致。主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。索引(index) 是用来快速地寻找那些具有特定值的记录。主要是为了检索的方便,是为了加快访问速度, 按一定的规则创建的,一般起到排序作用。所谓唯一性索引,这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。总结: 主键一定是唯一性索引,唯一性索引并不一定就是主键。一个表中可以有多个唯一性索引,但只能有一个主键。主键列不允许空值,而唯一性索引列允许空值。主键可以被其他字段作外键引用,而索引不能作为外键引用。