当前位置: 首页 > 编程笔记 >

如果我截断一个表,是否还应该添加索引?

姚飞昂
2023-03-14
本文向大家介绍如果我截断一个表,是否还应该添加索引?,包括了如果我截断一个表,是否还应该添加索引?的使用技巧和注意事项,需要的朋友参考一下

如果截断表,则不需要添加索引,因为截断表后会重新创建表,并且会自动添加索引。

让我们首先创建一个表-

mysql> create table DemoTable
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> FirstName varchar(20),
   -> LastName varchar(20)
   -> );

以下是创建索引的查询-

mysql> create index Index_firstName_LastName on DemoTable(FirstName,LastName);
Records: 0 Duplicates: 0 Warnings: 0

使用插入命令在表中插入一些记录-

mysql> insert into DemoTable(FirstName,LastName) values('John','Smith');

截断表格之前,您需要检查表格状态-

mysql> show create table DemoTable;

输出结果

这将产生以下输出-

+--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table       | Create
Table|
+--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| DemoTable    | CREATE TABLE `DemoTable` (`Id` int(11) NOT NULL AUTO_INCREMENT,`FirstName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,`LastName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,PRIMARY KEY (`Id`),KEY `Index_firstName_LastName` (`FirstName`,`LastName`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
+--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

现在截断表-

mysql> truncate table DemoTable;

现在再次检查表状态。您不需要添加索引-

mysql> show create table DemoTable;

输出结果

这将产生以下输出-

+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table        | Create
Table
|
+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| DemoTable | CREATE TABLE `DemoTable` (`Id` int(11) NOT NULL AUTO_INCREMENT,`FirstName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,`LastName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`Id`),KEY `Index_firstName_LastName` (`FirstName`,`LastName`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
+--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
 类似资料:
  • 无论是ES6promise还是蓝鸟promise、Qpromise等。 如何测试给定对象是否为Promise?

  • 将SAML响应返回给SP时,大多数IdP(如AzureAD、Okta、Onelogin、GSuite)都有以下签名选项: 签名响应 并且在没有任何配置的情况下,对于大多数IdP,签名的默认值是仅签署断言。 下面是来自AzureAD的SAML响应示例(默认签名选项是符号断言)。断言受到完整性保护,不能进行篡改。但是,断言以外的字段,,可以在不知情的情况下被篡改或添加/删除! 所以我的问题是: 为什么

  • 问题内容: 我有一些副作用要应用,并且想知道如何组织它们: 一次性使用 或几个useEffects 在性能和体系结构上有什么更好的选择? 问题答案: 您需要遵循的模式取决于您的useCase。 首先 ,您可能遇到以下情况:在初始安装期间需要添加事件侦听器,并在卸载时对其进行清理,而在另一种情况下,则需要清理特定的侦听器并在prop更改时将其重新添加。在这种情况下,使用两个不同的useEffect更

  • 问题内容: 我正在运行Java应用程序,并且出现以下错误: java.lang.ClassNotFoundException:org.apache.http.util.Args 我认为问题在于一个库试图通过反射使用该类,但是没有找到它。 我应该在Maven pom.xml文件中添加什么来解决此依赖性? 我的类路径已经包含以下与该类相关的参考: 我的档案: 问题答案: 您需要添加以下依赖项:

  • 问题内容: 我们为企业托管了许多网站,每个企业都有许多可能希望通过ES进行索引和搜索的文档类型。 通常,每个企业拥有的文档类型数量少于20,每种类型的文档数量可能少于10万(通常少得多)。 我不确定如何设置这些网站的数据?我应该将它们放在单独的索引中,还是应该将它们全部塞入具有不同文档类型的同一索引中?还是还有其他东西? 也许,我什至应该更深入地索引中小型网站?如果计划扩展到5万个站点,应该准备哪

  • 问题内容: 我发现自己同意返回接口而不是具体的类。 原因很简单,我要松散耦合。 但是还会有其他影响或权衡吗? 问题答案: 对于List或ArrayList之类的类型,不应进行任何编译,并且应将List提升Code返回到接口。 如果这是通过诸如CopyOnWriteArrayList之类的并发包进行的,并且您使用的是addIfAbsent之类的方法(未在List接口中定义),您将发现自己受到限制。