当前位置: 首页 > 面试题库 >

具有相同列的两个重复索引

山翼
2023-03-14
问题内容

我正在查看数据库中的一个表(我没有创建该表),我发现有两个完全相同的索引(我不知道为什么这样做)只是命名不同,这可以对桌子有负面影响吗?

拿这个例子表:

create table mytable(
    mytable_id int unsigned primary key auto_increment,
    user_id int unsigned,
    amount decimal(12,2),
    index user_id_idx(user_id),
    index user_id_2(user_id)
);

问题答案:

是的,它可以起作用。

当然,如果使用这两个索引,它们会占用磁盘和内存的额外空间。

但是,它们还会使查询优化器做更多的工作来计算每个SELECT期间每个索引的收益。您拥有的索引越多,需要比较的案例就越多。因此,消除真正的冗余索引是有回报的。

正如其他人也指出的那样,索引是在INSERT / UPDATE /
DELETE操作期间更新的,因此拥有的索引越多,表示的开销就越大。经常使用的索引证明了它们自己的开销是合理的,但是重复的索引会占用更多的开销,而没有其他好处可以匹配。

如果您有兴趣,Percona Toolkit拥有一个工具pt-duplicate-key-
checker
,它可以在您的所有表中搜索类似的情况。



 类似资料:
  • 假设您有2个包,并且有名为-Test的公共类。 第一个包。测试 第二包测试 它们中的每一个都有实例变量-x。 在第一种情况下-int x=2; 在第二种情况下-int x=3; 我想导入FirstPackage。在第二个包内测试。测试并打印值为2的x。 我的代码: 但是输出是3。如何打印?

  • 谁能帮我创建一个视图,连接两个没有重复的相同列的表? 例: 我有两张桌子 T1 和 T2 一种网络的名称(传输率可达1.54mbps) T2 航站楼 我的输出视图应该如下所示 下面是我正在尝试的查询 但是我得到了重复的记录。

  • 我正在运行以下JOOQ查询: table和joinTable都有id作为主键名称,但最终获取实体类包含joinTable的id和table的其余列。如果我重新排序表,结果相似,我有表的ID和joinTable的其余列。

  • 现在有两个列表值,如下所示: 和x标签: 我想绘制基于相同x标签的不同颜色的lst1和lst2条。 我尝试的代码: 但有错误: attribute error:“none type”对象没有属性“seq”

  • 问题内容: 我有两个表,它们的定义如下: 和这里代表。 我做了一个简单的本地SQL只能加入到选择和为: 但是我在行上遇到异常: 堆栈跟踪 : 您能建议出什么事了吗? 问题答案: 您需要设置结果别名。

  • 我有以下数组列表: 其中包括: 卫生间编号:[、、、230、230、230、5000、4000、4000、17000、] 限制标志:[,,,,-,-,-,,,,,,,,] 它们有相同的尺寸,你怎么能意识到有空的物品,但没关系。 我需要用相同的索引连接每个ArrayList,结果必须是: [, , , , 230-, 230-, 230-, 5000 , 4000 , 4000 , 17000, ]