暂无图片
关于mysql唯一索引说法正确的是?
我来答
分享
好好学习
2023-07-26
关于mysql唯一索引说法正确的是?

下面关于mysql唯一索引说法正确的是? 

A 联合索引不能创建为唯一索引 

B 当插入一行新数据时,唯一索引不能使用change buffer优化 

C 当使用replace into插入数据时,如果碰到唯一索引冲突,会先删除这行冲突记录,然后再插入新的一行 

D 唯一索引查询比普通索引略快,是因为可以少扫描一些行

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
cdwas

正确的说法是:

C 当使用replace into插入数据时,如果碰到唯一索引冲突,会先删除这行冲突记录,然后再插入新的一行。

D 唯一索引查询比普通索引略快,是因为可以少扫描一些行。

这两个说法是正确的。

A 联合索引可以创建为唯一索引。唯一索引可以包含一个或多个字段,并且可以确保索引列的值在整个表中是唯一的。联合索引是指创建索引时同时包含多个列。

B 当插入一行新数据时,唯一索引是可以使用change buffer优化的。Change buffer是一种MySQL的内部机制,用于延迟辅助索引的更新操作。唯一索引的插入操作也可以受益于这种优化。

因此,正确的说法是C和D。

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
cdwas

正确的说法是:

D 唯一索引查询比普通索引略快,是因为可以少扫描一些行。

解释:唯一索引确保索引列中的值是唯一的,并且对于查询操作,MySQL可以利用唯一索引提供更高效的查询性能。唯一索引可以在查询过程中少扫描一些行,因为它可以快速定位到满足查询条件的唯一行。

关于其他选项的解释如下:

A 联合索引可以创建为唯一索引:联合索引是由多个列组合而成的索引,也可以设置为唯一索引。

B 当插入一行新数据时,唯一索引可以使用change buffer优化:change buffer 是一种优化技术,它将数据更改的操作暂时保存在内存中,然后批量应用到磁盘上的索引,以减少磁盘写入的次数,提高性能。唯一索引也可以使用 change buffer 来优化插入操作。

C 当使用 replace into 插入数据时,如果碰到唯一索引冲突,MySQL 会先删除冲突记录,然后再插入新的一行。这是错误的说法,replace into 是一种特殊的插入操作,当唯一索引冲突时,它会先删除冲突的行,然后插入新的一行。

暂无图片 评论
暂无图片 有用 0
打赏 0
好好学习
题主
2023-07-26
这个多选项
everything

bcd正确

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
mysql如何恢复到指定的一个时间点,比如2 号晚上22:10:00 ??
回答 1
如果想恢复到具体的时间点,pxb还需要结合binlog恢复,利用mysqlbinlog指定startdatetime进行恢复。
MySQL 线上联机表数据量过大(超500W),想只保留该表10天左右热数据,其他数据定期迁移至一张his新表(做历史查询使用),不想影响主库性能,有推荐的方案吗?
回答 2
已采纳
我能想到的解决方案:A、存量数据迁移,1、可以利用mysqldump把大表dump出来,利用where条件筛选出10天前的数据。2、导入数据库,导入前把dump出的文件的表明更换一下。3、清理联机表上
用二进制包安装mysql的时候,是先创建配置文件再运行mysql_install_db,还是反过来?
回答 1
已采纳
先创建配置文件,再在初始化的时候使用配置文件进行初始化./scripts/mysqlinstalldbdefaultsfile/etc/mysql/my3306.cn
pg和mysql之中该如何选择?
回答 7
已采纳
https://blog.csdn.net/youzhouliu/article/details/124994728这里面有详细介绍
关于centos7 RPM方式安装mysql8.4的问题
回答 2
二进制模式安装mysqlMysql5.7初始化前要评估是否独立的undo文件tarxvfmysql5.7.34linuxglibc2.12x8664.tar mkdirp/usr/local
mysql数据库如何转为sqlite数据库?
回答 1
mysql导出。sqlite导入?
同城机房A到B的同步如何做?
回答 1
如果你是需要两个机房之间的数据相互同步的话,就A和B机房的主做个双向同步
Mysql建不了用户,报错1819,怎么解决?
回答 3
5.7setglobalvalidatepasswordpolicy0;setglobalvalidatepasswordlength0;setglobalvalidatepasswordnumber
MySQL多张表 需要elasticsearch搜索,但是字段不同,是不同的业务表。只是可能包含相同的搜索关键字,怎么放到es存储,只能多个表的字段合并到一个index 里吗?
回答 1
已采纳
最好是mysql单表映射到es里的单个index,如果多表确有关联且关联检索更高效,可以在mysql里先把多表关联做成view,再把这张视图映射到es里。
为什么分区解决不了行迁移?
回答 1
已采纳
行迁移只会影响性能,不会影响应用。因为应用不知道存在行迁移,应用使用的SQL与之前没有任何不同。如果通过一个索引来读发生了行迁移的这一行,索引会指向原来的块,原来的块再指向新块。要得到具体的行数据,原