首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Oracle】-【索引】先查数据索引,还是先索引再插数据

问题: 1、新建一个结构,创建索引,将百万或千万级的数据使用insert导入该。 2、新建一个结构,将百万或千万级的数据使用isnert导入该,再创建索引。 这两种效率哪个高呢?...我感觉无论先还是后索引,当有数据时都需要update索引数据,问题是有索引的情况下插数据与有数据的情况下建立索引,各自的消耗。...实验: 100w记录, 1、先创建索引,再插入数据,大约1.3min。...总结: 如果先建立索引再插入数据,每次插入数据还需要修改索引信息。 实战还要看业务要求,有的业务可能还需要索引和约束对数据进行校验,这样就应该先建立索引了。...如果是一次性处理,原则上先插数据索引

2.7K30
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL数据类型的选择

首先数据选择有几个简单原则: 更小的通常更好。一般情况下,应该尽量使用可以正确存储数据的最小数据类型。例如只需要存 0~200,tinyint unsigned 更好。...如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化,因为可为 NULL 的列使得索引索引统计和值比较都更复杂。特别是计划在列上索引,就应该尽量避免设计成可为 NULL 的列。...char 类型是定长的:MySQL 总是根据定义的字符串长度分配足够的空间。 char 存储会删除存储数据的末尾空格;varchar 不会。...(准确来说是 MySQL 4.1 以后的版本 varchar 不会删除存储数据的末尾空格) blob 和 text 类型 blob 和 text 都是为了存储很大的数据而设计的字符串数据类型,分别采用二进制和字符方式存储...枚举(enum)类型 MySQL 在内部会将每个值在列表中的位置保存为整数,并且在的 .frm 文件中保存 “数字-字符串” 映射关系的 “查找”。

5.2K10

MySQL增加唯一索引场景

《新增字段的一点一滴技巧》 《探寻删除字段慢的原因》 《删除字段为何慢?》 《主键和唯一约束的索引肯定唯一?》...但MySQL中对于字段、索引的使用,就需要些技巧,否则就会碰到坑,这是初学MySQL,比较不太适应的一个点,看到技术社区推的这篇文章《技术分享 | MySQL 添加唯一索引的总结》,就讲到了MySQL...MySQL 5.6 开始支持 Online DDL ,添加[唯一]索引虽然不需要重建,也不阻塞 DML ,但是场景下还是不会直接使用 Alter Table 进行添加,而是使用第三方工具进行操作,...在没有查询的情况下,持锁时间很短,基本可以忽略不计,所以强烈建议改操作时避免出现查询。 由此可见,表记录大小影响着加索引的耗时。如果是,将严重影响从库的同步延迟。...gh-ost 可能丢数据,有辅助功能可以避免部分丢数据的场景 适合添加唯一索引 三、添加唯一索引的风险 根据上面的介绍可以得知 gh-ost 是比较适合加唯一索引,所以这部分就着重介绍一下 gh-ost

2.6K40

MySQL索引需要的原则

因此,为这样的字段建立索引,可以提高整个的查询速度。 4.限制索引的数目 索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。修改时,对索引的重构和更新很麻烦。...越多的索引,会使更新变得很浪费时间。 5.尽量使用数据量少的索引 如果索引的值很长,那么查询的速度会受到影响。...7.删除不再使用或者很少使用的索引 中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。...比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式 10.尽量选择区分度高的列作为索引。...比如from_unixtime(create_time) = ’2014-05-29’就不能使用到索引,原因很简单,b+树中存的都是数据中的字段值,但进行检索时,需要把所有元素都应用函数才能比较,显然成本

1.7K20

反向工程(自动杀器)

开源地址:https://github.com/NewLifeX/X (求star, 656+) 杀器 反向工程是XCode的杀器,区别于其它ORM的最强功能!...通俗理解:基于XCode开发的应用,无需数据库安装脚本,连接字符串指向哪一台哪一种数据库,系统就自动在上面!...正式定义:基于实体类的结构信息,在连接字符串指定的目标数据库上自动执行、添删改字段、创建索引等操作,支持各种数据库! 应用系统首次启动完成的时候,也是自动库并初始化完成的时候。...因此,XCode切换到系统库,开始创建数据库School,并创建数据索引。这里完全是MySql语法,不同于上面的SQLite表语句。...数据索引接口,每张数据没有或者有多个索引索引指定包括哪些字段 ,是否唯一 反向工程 有了IDataTable,我们就可以主动控制数据结构。

2K20

php清空mysql数据,mysql怎么清空数据数据

mysql中,可以利用“DELETE”和“TRUNCATE”关键字来清空数据中的数据,具体语法为“DELETE FROM 数据;”和“TRUNCATE TABLE 数据;”。...本教程操作环境:windows7系统、mysql8版、Dell G3电脑。 MySQL 提供了 DELETE 和 TRUNCATE 关键字来删除中的数据。...MySQL DELETE关键字 在 MySQL 中,可以使用 DELETE 语句来删除的一行或者多行数据。...删除中的全部数据 示例:删除 tb_courses 中的全部数据mysql> DELETE FROM tb_courses; Query OK, 3 rows affected (0.12 sec)...它们都用来清空中的数据。 DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的,再重新创建一个一模一样的新,而不是逐行删除中的数据,执行数据比 DELETE 快。

12.3K40

mysql索引多了有什么坏处

建立索引常用的规则如下: 1、的主键、外键必须有索引; 2、数据量超过300的应该有索引; 3、经常与其他进行连接的,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别是的字段...,应该建立索引; 5、索引应该建在选择性高的字段上; 6、索引应该建在小字段上,对于的文本字段甚至超长字段,不要索引; 7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:  A、正确选择复合索引中的主列字段...,考虑减少复合的字段;  C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引; 进行数据操作的,不要建立太多的索引; 9、删除无用的索引,避免对执行计划造成负面影响...因为太多的索引与不充分、不正确的索引对性能都毫无益处:在上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。...另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的来说,负面影响更大 发布者:全栈程序员栈长,转载请注明出处:https://

2.7K20

粗聊Mysql——你会么?

本文中说到的“”,并非单纯的一个库,或是一张,而是你建好的库和在项目的运营中,是否能应付各种事件,下面我说说几个我在项目中遇到的问题以及处理的方法,算是一个小小的心得,给大家分享下。...比如现在有2张,一张新闻栏目,一张新闻,现在两张需要进行关联,我想大多数人的做法肯定是在新闻表里一个新闻栏目id,然后把新闻栏目表里的主键ID(自增)写到这个字段里,通过这样进行两关联。   ...所以我建议两之间关联不用主键,而是单独一个编号的字段,我们这里可以用mysql的uuid()函数做为编号,相关文献可以参考《UUID做主键好还是不好》,只所以一张要2个主键,一个物理主键(自增id...至于性能,我本地测了下基本上没差异,网上也有人做了10W条数据的测试——《实测MYSQL UUID性能》。...四、为常用的搜索字段建立索引吧   不解释,但不要盲目建立索引。 五、欢迎您的回复补充

5.2K10

数据量影响MySQL索引选择

现象 新建了一张员工,插入了少量数据索引中所有的字段均在where条件出现时,正确走到了idx_nap索引,但是where出现部分自左开始的索引时,却进行全扫描,与MySQL官方所说的最左匹配原则...; 数据如下: id  name    age pos    add_time 1  July    23  dev    2018-06-04 16:02:02 2  Clive  22...      "join_execution": {         "select#": 1,         "steps": [         ]       }     }   ] } 增加数据量...-- 接下来增大数据量 INSERT INTO `staffs` (`name`, `age`, `pos`, `add_time`) VALUES     ('July', 25, 'dev',...数据量的大小,会影响索引的选择,具体的情况还是通过Explain和Optimizer Trace来查看与分析。

1.5K20

MySQL 系列教程之(五)DDL 操作:

创建RUNOOB数据库,并设定编码集为utf8 删除数据库 删库有风险,动手需谨慎 drop database 库名; MySQL 数据 创建MySQL数据需要以下信息: 名 表字段名 定义每个表字段...MySQL数据。...查看表结构 desc stu; 查看表语句 show create table stu\G 修改结构 格式: alter table 名 action(更改选项); 添加字段: 添加字段:alter...区别: MyISAM类型的数据文件有三个frm(结构)、MYD(数据)、MYI(索引) MyISAM类型中的数据增 删 改速度快,不支持事务,没有InnoDB安全。...删除 MySQL中删除数据是非常容易操作的, 但是你再进行删除操作时要非常小心,因为执行删除命令后所有数据都会消失。 DROP TABLE table_name ;

7.6K73

mysql查询索引_MySQL查看表索引

mysql> show index from tblname; mysql> show keys from tblname; · Table 的名称。...· Non_unique 如果索引不能包括重复词,则为0。如果可以,则为1。 · Key_name 索引的名称。 · Seq_in_index 索引中的列序列号,从1开始。...· Collation 列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)。 · Cardinality 索引中唯一值的数目的估计值。...基数根据被存储为整数的统计数据来计数,所以即使对于小型,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机 会就越大。...· Sub_part 如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。 · Packed 指示关键字如何被压缩。如果没有被压缩,则为NULL。

6.7K40

mysql数据库(一):与新增数据建议收藏

创建 思考:如何把下面excel的数据保存到数据库表里面 表语法: create table ( , , ......如果需要支持中文数据存储和显示,需要怎么做? 在末尾加上DEFAULT CHARSET=utf8; 6....SYSDATE(), SYSDATE()); 总结: 需要注意的是,如果插入数据时,只对部分字段进行初始化,则需要声明要插入的字段 在mysql中,字符串的数据是用英文的''括起来的 创建一个grade...的时候每一个字段的后面用什么符号分隔?最后一个字段后面需要分隔符吗? 逗号,不需要 2. 插入数据时,只初始化部分字段与初始化所有字段时sql的不同点体现在哪里?...插入一条数据和多条数据的语法区别是?多条数据时,中间以什么符号做分隔? 插入多条数据,多个括号括起来,以逗号做风格 8. 如果需要支持中文数据存储和显示,需要怎么做?

6K20

ClickHouse学习-索引的优化点(一)

ClickHouse 优化点 clickhouse 相对于mysql,除了在mysql在SQL和索引的优化空间比较大外,而其他的clickhouse的优化空间还是很大的,对于clickhouse他的服务端配置参数对于任务的影响还是很大的...现在我们来看看clickhouse都有哪些常规的优化点,今天主要学习一下创建的时候需要注意的点 优化 1. 数据类型 1.1 null值尽量避免 1.2 日期都存储为日期类型 时间戳类型。...2.2 索引优化 我们先搞清楚,clickhouse的索引是如何存储的,当数据被插入到中时,会创建多个数据片段并按主键的字典序排序。...by指定,一般在查询条件中经常被用来充当筛选条件的属性被纳入进来 可以是单一维度,也可以是组合维度的索引,通常需要满足高级列在前、查询频率的在前原则; 基数特别的不适合做索引列(可以对比上图索引创建规则...总结 优化,创建字段的时候尽量不要使用nullable 日期尽量都使用date类型 索引存储的规则 创建索引尽量选择基数的,也就是重复相对较多的(因为是稀疏索引)在mysql中正好是相反的他需要创建索引的时候基数相对较大的

3.3K20

MySQL数据、优化、算法、分区分库分总结

那么就会导致数据的插入顺序,并不能保证后面插入数据的主键一定比前面的数据。...自增主键用完了怎么办 无符号整型存储范围为0~4294967295,约43亿。一旦自增id达到最大值,此时数据继续插入是会报一个主键冲突异常。...其次,做时间比较运算,你需要用STR_TO_DATE等函数将其转化为时间类型,你会发现这么写是无法命中索引的。数据量一,是个坑!...什么情况下应不或少索引?...1、表记录太少 2、经常插入、删除、修改的 3、数据重复且分布平均的表字段,假如一个有10万行记录,有一个字段A只有T和F两种值,且每个值的分布概率大约为50%,那么对这种A字段索引一般不会提高数据库的查询速度

5.3K31

Mysql索引原理(十七)」维护索引-减少索引数据的碎片

否则,对于范围査询、索引覆盖扫描等操作来说,速度可能会降低很多倍;对于索引覆盖扫描这点更加明显。 数据存储也可能碎片化。然而,数据存储的碎片化比索引更加复杂。有三种类型的数据碎片。...行碎片( Row fragmentation) 这种碎片指的是数据行被存储为多个地方的多个片段中。即使查询只从索引中访问行记录,行碎片也会导致性能下降。...行间碎片对诸如全扫描和聚簇索引扫描之类的操作有很大的影响,因为这些操作原本能够从磁盘上顺序存储的数据中获益。...可以通过执行OPTIMIZE TABLE或者导出再导入的方式来重新整理数据。这对多数存储引擎都是有效的。对于一些存储引擎如 MyISAM,可以通过排序算法重建索引的方式来消除碎片。...只需要将的存储引擎修改为当前的引擎即可: mysql> ALTER TABLE ENGINE=; 应该通过一些实际测量而不是随意假设来确定是否需要消除索引的碎片化

99430

技术分享 | MySQL 添加唯一索引的总结

MySQL 5.6 开始支持 Online DDL,添加唯一索引虽然不需要重建,也不阻塞DML,但是场景下还是不会直接使用Alter Table进行添加,而是使用第三方工具进行操作,比较常见的就属...在没有查询的情况下,持锁时间很短,基本可以忽略不计,所以强烈建议改操作时避免出现查询。由此可见,表记录大小影响着加索引的耗时。如果是,将严重影响从库的同步延迟。...可能丢数据,有辅助功能可以避免部分丢数据的场景适合添加唯一索引3 添加唯一索引的风险根据上面的介绍可以得知gh-ost是比较适合加唯一索引,所以这部分就着重介绍一下gh-ost添加唯一索引的相关内容...第一,如果是,在执行【gh-ost-on-before-cut-over】脚本过程中(执行这个脚本时间较长),新增的记录跟原来数据有重复,这个就没法规避了。...添加唯一索引做了一下总结,分享了一些案例和经验。

2.1K30
领券