如果表很小直接就用ALTER TABLE 语法就可以了, 但是我昨天操作的表有接近一亿条的数据, 为了增加这个索引我忙活到凌晨5点半才睡觉, 前后花了5个小时.
首先将旧表改名
rename table real_name to name_old;
然后建一个增加了索引的新表
create table `name_new` (
....
);
最后利用INSERT ... SELECT语法将旧表的数据导入到新表中, 这里花了我5个小时..., 时间真的很难熬...
insert into name_new select * from name_old;
导完之后将新表改名为合适的表名
rename table name_new to real_name;
这里有一篇关于INSERT ... SELECT 命令的效率的文章, 不过跟我上面的5小时无关.
http://hi.baidu.com/hexie007/blog/item/ff50ad0a9095d137b0351d4c.html
相关推荐
在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX 或 ALTER TABLE来为表增加索引。 1.ALTER TABLE可以用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。 2.CREATE INDEX可对表增加普通索引或UNIQUE...
以`STAT_SUBMIT_CENTER`表为例,假设我们需要为其最常用的查询条件`MSGDATE`字段创建索引。 **命令示例:** ```sql CREATE INDEX idx_msgdate ON STAT_SUBMIT_CENTER (msgdate); ``` 如果表是分区表,还可以考虑...
- **增加索引分区**:当添加新表分区时,可能需要相应地添加索引分区。 - **删除索引分区**:当删除表分区时,可能需要删除相应的索引分区。 - **重编译索引分区**:当索引分区损坏或需要更新统计信息时,需要重新...
实现javascript在界面上动态增加表的模板功能,可以和struts2配套完成界面的索引替换等功能,是一个关于界面动态增加表格以及和后台交互的很好的js代码
- 增加一个新字段“总成绩”,类型为`real`,默认值为空。 - 设置“平时成绩”字段的取值范围为小于100的正数。 ##### 4. 建立索引 - **索引类型**:普通升序索引、唯一索引、聚集索引和复合索引。 - **索引字段...
- 聚集索引通常占用的空间较小,大约为表大小的5%左右。 - 类比于新华字典,正文部分按照字母顺序排列,可以形象地理解为聚集索引。 3. **适用场景**: - 对于频繁进行范围查询或排序操作的字段,适合建立聚集...
3. **避免过度索引**:虽然更多的索引可能看似能提高查询速度,但过多的索引会增加写操作的开销,因为每次插入、更新或删除都需要维护所有索引。因此,需要在读写性能间找到平衡。 4. **使用覆盖索引**:覆盖索引是...
- 创建聚集索引通常不会增加表的大小,但创建非聚集索引则会占用额外的空间。 - **查询性能**: - 聚集索引通常提供更好的查询性能,尤其是在涉及范围查询或排序操作时。 - 插入记录时,聚集索引和非聚集索引的...
例如,`CREATE TABLESPACE HRPM0 DATAFILE '/oradata/misdb/HRPM0.DBF' SIZE 5M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED` 命令创建了一个名为HRPM0的表空间,并设置数据文件的初始大小为5M,自动扩展每次增加10M...
然而,添加索引并非随意为之,而是需要根据实际需求和性能考虑来明智地选择。 首先,理解索引的作用至关重要。索引就像是数据库中的书签,帮助数据库快速找到数据的位置,减少了全表扫描的时间。在【标题】"mysql...
**索引顺序表查找**是一种在数据结构领域中常见的查找技术,它结合了索引和顺序查找的优点。在计算机科学中,数据存储和检索效率至关重要,而索引顺序表查找正是为了提高查找效率而设计的一种方法。下面我们将深入...
* 对于那些定义为 text、image 和 bit 数据类型的列不应该增加索引。 * 当修改性能远远大于检索性能时,不应该创建索引。 创建索引的方法有多种,包括直接创建索引的方法和间接创建索引的方法。直接创建索引可以...
2. 索引设计:索引不是万能的,过多的索引会增加写操作的开销,因此需要权衡查询速度和写入性能。 3. 维护操作:包括分区修剪、重分区、合并分区等,以适应数据量变化和业务需求调整。 4. 兼容性和性能监控:不同的...
散列分区是将数据基于散列算法映射到每一个分区,例如,可以将 ID 主键值增加全局索引的时候使用散列分区,主要做的目的是将递增的索引键值分布到多个分区上避免系统争用和热块的产生。 Exp1: CREATE TABLE HASH_...
- **NULL值**: Oracle允许索引列包含NULL值,但需要注意的是,NULL值会被视为不同的值,这可能会影响到索引的效果。 - **BULK INSERT**: 大量数据插入时,可以考虑使用BULK INSERT操作来减少对索引的影响。 - **索引...
创建索引前,需要评估索引的大小、表空间剩余空间的大小和临时表空间大小是否足够。使用 online 模式创建索引,可以减少创建索引对业务的影响。 在线创建索引的 SQL 语句为: ```sql create index index_name on ...
Oracle 分区基于“分而治之”的理念,将大表和索引划分为多个小的逻辑部分,每个部分称为分区。这种策略有助于减少单个表的管理复杂性,提高I/O性能,并增强系统并行处理能力。当数据量过大时,通过分区可以将查询...
- **NULL值与索引**:对于包含NULL值的列,B-Tree索引可能会降低性能,因为NULL在索引中被视为唯一的值。在设计时,考虑是否允许NULL值或设定默认值。 - **覆盖索引**:如果查询只需要索引中的信息,覆盖索引可以...
在数据库管理中,索引是优化查询性能的重要手段之一,但并不是所有情况下增加索引都能带来性能提升。本文通过一个具体的示例,探讨了索引对查询性能的影响,并揭示了某些情况下索引未被有效利用可能导致的反效果。 ...
- 不是所有查询都受益于索引,对于全表扫描或者不使用索引列的查询,索引可能反而增加系统负担。 - 使用`EXPLAIN PLAN`或`SQL Profiler`来分析查询性能,确定是否需要添加或调整索引。 **总结:** Oracle约束和...