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

在Oracle中,为什么LONG类型的列最后创建?

在Oracle中,LONG类型的列最后创建的原因是为了避免在查询时对表的性能产生负面影响。LONG类型是一种用于存储较大文本数据的列类型,它可以存储最多2GB的数据。然而,由于LONG类型的列存储方式不同于其他列类型,它的存储和访问方式会导致查询性能下降。

具体来说,LONG类型的列存储在单独的数据块中,而不是与其他列一起存储在行中。这意味着当查询需要访问LONG类型的列时,需要额外的I/O操作来获取相应的数据块,从而增加了查询的时间和资源消耗。另外,由于LONG类型的列不支持索引,所以无法通过索引来加速查询。

因此,为了避免影响查询性能,通常建议将LONG类型的列放在表的最后创建。这样,在查询时可以先获取其他列的数据,而不需要额外的I/O操作。同时,由于LONG类型的列通常用于存储较大的文本数据,对于大部分查询来说,并不需要经常访问该列的数据,因此将其放在最后可以减少对其他列数据的不必要的I/O操作。

需要注意的是,由于LONG类型在Oracle 12c及以后的版本中已被推荐使用CLOB类型或者VARCHAR2类型来替代,所以在新的数据库设计中,应尽量避免使用LONG类型的列。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在Pandas中更改列的数据类型【方法总结】

例如,上面的例子,如何将列2和3转为浮点数?有没有办法将数据转换为DataFrame格式时指定类型?或者是创建DataFrame,然后通过某种方法更改每列的类型?...理想情况下,希望以动态的方式做到这一点,因为可以有数百个列,明确指定哪些列是哪种类型太麻烦。可以假定每列都包含相同类型的值。...解决方法 可以用的方法简单列举如下: 对于创建DataFrame的情形 如果要创建一个DataFrame,可以直接通过dtype参数指定类型: df = pd.DataFrame(a, dtype='float...软转换——类型自动推断 版本0.21.0引入了infer_objects()方法,用于将具有对象数据类型的DataFrame的列转换为更具体的类型。...例如,用两列对象类型创建一个DataFrame,其中一个保存整数,另一个保存整数的字符串: >>> df = pd.DataFrame({'a': [7, 1, 5], 'b': ['3','2','1

20.3K30
  • 在Java中为什么不同的返回类型不算方法重载?

    本文已收录《Java常见面试题》:https://gitee.com/mydb/interview 方法重载是指在同一个类中,定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载...: 那为什么返回类型不能做为方法签名的一部分呢?...匹配原则3:自动装/拆箱匹配 接下来将第二匹配原则中的 long 方法也删除掉,实现代码如下: public class OverloadExample { public static void...匹配原则5:可变参数匹配 最后将代码中的方法删除的只剩一个可选参数,实现代码如下: public class OverloadExample { public static void main(...总结 在同一个类中定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。方法重载的典型使用场景是 String 中的 valueOf 方法,它有 9 种实现。

    3.4K10

    【DB笔试面试561】在Oracle中,如何预估即将创建索引的大小?

    ♣ 题目部分 在Oracle中,如何预估即将创建索引的大小? ♣ 答案部分 如果当前表大小是1TB,那么在某一列上创建索引的话索引大概占用多大的空间?...对于这个问题,Oracle提供了2种可以预估将要创建的索引大小的办法: ① 利用系统包DBMS_SPACE.CREATE_INDEX_COST直接得到。...利用DBMS_SPACE.CREATE_TABLE_COST可以获得将要创建的表的大小。...第二种办法:Oracle 11g新特性:NOTE RAISED WHEN EXPLAIN PLAN FOR CREATE INDEX 这是一个非常实用的小特性,在Oracle 11gR2中使用EXPLAIN...& 说明: 有关如何预估即将创建索引的大小可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-1381160/ 本文选自《Oracle程序员面试笔试宝典

    1.3K20

    【DB笔试面试697】在Oracle中,V$SESSION视图中有哪些比较实用的列?

    题目部分 在Oracle中,V$SESSION视图中有哪些比较实用的列? 答案部分 讲到Oracle的会话,就必须首先对V$SESSION这个视图中的每个列都非常熟悉。...该视图在Oracle 11gR2下包含97列,在Oracle 12cR2下增加了6列,共包含103列。下面作者以表格的形式对这个视图中的重要列做详细说明。...表 3-26 V$SESSION视图 列 数据类型 说明 SADDR RAW(4 | 8) 会话地址,对应于V$TRANSACTION.SES_ADDR列。 SID NUMBER 会话标识符。...USERNAME VARCHAR2(30) Oracle用户名。 COMMAND NUMBER 正在执行的SQL语句类型(分析的最后一个语句)。...关于该列值的含义,请参阅V$SQLCOMMAND.COMMAND列。如果该列的值为0,那么表示并没有在V$SESSION视图里记录。

    1.6K30

    【DB笔试面试751】在Oracle中,有哪几种类型的DG?

    ♣ 题目部分 在Oracle中,有哪几种类型的DG?...创建物理备库的方法很多。对于Oracle 11g而言,可以直接从Active Database来创建,也可以基于10g的RMAN备份方式来创建。对于Oracle 10g而言,只能基于RMAN来创建。...逻辑DG不支持所有的数据类型,这些不支持的数据类型可以在视图DBA_LOGSTDBY_UNSUPPORTED中查看。如果使用了这些数据类型,那么不能保证主备库完全一致。...Logical Standby可以在恢复的同时进行读写操作。逻辑DG实时应用进程为LSP进程。需要注意的是,在逻辑DG中,SYS用户下的对象不会同步。...通过V$DATABASE视图的DATABASE_ROLE列可以查询DG的类型: [root@rhel6lhr ~]# ps -ef|grep pmon grid 3375 1 0 08

    73020

    【DB笔试面试560】在Oracle中,虚拟列索引(Virtual Column Indexes)的作用是什么?

    ♣ 题目部分 在Oracle中,虚拟列索引(Virtual Column Indexes)的作用是什么?...♣ 答案部分 在Oracle 11g之前的版本中,如果需要使用表达式或者一些计算公式,那么需要创建数据库视图;如果需要在这个视图上使用索引,那么会在表上创建基于函数的索引。...② 可以为虚拟列创建索引,称为虚拟列索引(实际上,Oracle为其创建的是函数索引),不能显式地为虚拟列创建函数索引。...③ 可以通过视图DBA_TAB_COLS的DATA_DEFAULT列来查询虚拟列的表达式,当创建了虚拟列索引(其实是一种函数索引)后,在视图DBA_IND_EXPRESSIONS中不能查询索引列。...⑪ 在已经创建的表中增加虚拟列时,若没有指定虚拟列的字段类型,则Oracle会根据关键字“GENERATED ALWAYS AS”后面的表达式计算的结果自动设置该字段的数据类型。

    1.3K20

    【DB笔试面试626】在Oracle中,如何查看和下载BLOB类型的数据?

    ♣ 题目部分 在Oracle中,如何查看和下载BLOB类型的数据? ♣ 答案部分 BLOB类型的数据存储的是二进制文件,例如pdf、jpg或mp4视频格式文件等。...对于BLOB类型的数据,可以使用图形化界面软件(例如PLSQL Developer或Oracle SQL Developer)来下载这些二进制数据,也可以使用PL/SQL程序来对这些数据进行读写。...另外,可以使用以下代码插入BLOB类型的文件到Oracle数据库中: drop table IMAGE_LOB; CREATE TABLE IMAGE_LOB ( T_ID VARCHAR2 (5...,这里导出的文件都是jpg格式的,如果存储的是pdf或其它格式的文件,那么在导出完成后只需要将文件的后缀名修改掉即可,并不会损坏文件。...Oracle中的lob字段采用独立的Lob Segment来存储,因此表的大小不能只查看DBA_SEGMENTS视图,还需要和DBA_LOBS视图结合来查看。

    2.5K20

    arcengine+c# 修改存储在文件地理数据库中的ITable类型的表格中的某一列数据,逐行修改。更新属性表、修改属性表某列的值。

    作为一只菜鸟,研究了一个上午+一个下午,才把属性表的更新修改搞了出来,记录一下: 我的需求是: 已经在文件地理数据库中存放了一个ITable类型的表(不是要素类FeatureClass),注意不是要素类...FeatureClass的属性表,而是单独的一个ITable类型的表格,现在要读取其中的某一列,并统一修改这一列的值。...表在ArcCatalog中打开目录如下图所示: ? ?...读取属性列并修改的代码如下:            IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause...pTable.Update(queryFilter, false); int fieldindex = pTable.FindField("JC_AD");//根据列名参数找到要修改的列

    9.6K30

    【YashanDB知识库】oracle dblink varchar类型查询报错记录

    ● nvarchar2类型2个字节存储一个字符,超过varchar(2000)的字段类型因为超过了4000个字节,在oracle中变成了long类型,如下组图2。...## 问题复现**组图1**:mysql中的表类型:oracle中的表类型:查询正常:**组图2**:mysql中的表类型:oracle中的表类型:查询报错:## oracle long类型限制- LONG...- 不能索引LONG类型列。- 不能将含有LONG类型列的表作聚簇。- 不能在SQLPlus中将LONG类型列的数值插入到另一个表格中,如insert into …select。...- 不能在SQL*Plus中通过查询其他表的方式来创建LONG类型列,如create table as select。...因为long类型的数值不能用insert into … select的方法插入,故我们要分两步走,先插入其它字段,最后再插入long类型字段,这可以通过过程来实现.参考:[oracle里long类型的总结

    9710

    20万DBA都在关注的11个问题(超有料)

    解答: 首先从trace中可以看出是LB类型的死锁,也就是Library Cache Lock,再查看大多数都是j00X进程在RECOMPILE_INVALID_PROCEDURE时候遇到(181个),...解答: 在Oracle RAC数据库中,节点间的时间同步非常重要。而在部分企业环境中,数据库之间、应用服务器和数据库之间的时间同步是必须的。在这种情况下,使用NTP进行时间同步就成了必然的选择。...8、有一个列内容需要两千个汉字,应用什么字符类型 描述: 有一个列内容需要两千个汉字,应用什么字符类型,long可以吗?...对于Oracle来说,在11g或更早的版本,varchar2的话,用GBK正好最大能存下2000汉字,如果是UTF8,那么varchar2列是不够的。...,只有最后一个为mounted 解答: 诊断发现是有人把数据文件创建在节点1的本地,导致节点2,3识别不了,把没有起来的pdb在本地的文件,通过rman 复制到共享存储上,问题解决。

    68120

    SQL 基础-->创建和管理表

    long 、long raw 为和以前的oracle版本兼容,oracle 继续支持 long 和long raw 数据类型 long 可变大字符型数据,最大G,long raw 裸二进制数据,...rowid 行地址 在oracle 8 以后的版本,LOB 数据类型可以完全取代LONG 数据类型, 而且oracle 服务器操作LOB 数据类型比操作LONG 数据类型效率更高。...另外,在一个表中只能定义一个LONG数据类型的列,但可定义多个LOB数据 类型的列。LONG数据类型的列最多可以存储GB数据,而LOB数据类型的列最多可以存储GB的数据。...LOCAL临时表中的数据只在填充它的事务可见,GLOBAL临时表可以被会话中的任何程序或模块访问。 临时表的数据在退出时自动清除,但临时表的定义是永久的。...二、修改表: 1.添加新列( 添加的列在最后,没办法调整其位置) ALTER TABLE tablename ADD (column datatype [DEFAULT expr] [ constraint

    96910

    【DB笔试面试400】在Oracle中,使用了如下的语句创建用户LHRLDD,则对于该用户而言,以下说法错误的是()

    题目 在Oracle中,使用了如下的语句创建用户LHRLDD,则对于该用户而言,以下说法错误的是() CREATE USER LHRLDD IDENTIFIED BY LHRLDD; A、该用户的口令为...LHRLDD B、LHRLDD的默认表空间为USERS C、LHRLDD的临时表空间为TEMP D、使用UPDATE命令可以修改LHRLDD的口令 A 答案 答案:D。...本题考察创建用户的命令。...在创建用户的时候若省略了默认表空间及临时表空间的话,则可以通过查询系统表SYS.PROPS$表来获取默认值,如下所示: SELECT * FROM PROPS$ D WHERE D.NAME IN ('...About Me:小麦苗 ● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用 ● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/ ● 本系列题目来源于作者的学习笔记

    1.3K20

    数据库自动化采集与数据库层别的建立

    目标:从Oracle抽取数据到HIVE中创建ODS层和DWD层数据库,并完成在当天的对应总共100张表的创建与数据载入 HQL语句预设 1:创建ODS层和DWD层 create database if...TBLname】表名 将需要建立的表格名存入在txt中,读取表格获取 -- 如果是整个数据库移植,可以通过查询目标数据库的表名获取 show tables; 【Ⅱ....[columns_info_list]】 / 【Ⅷ. optional】列的元数据描述部分:列名,数据类型,列备注 表或者列的描述信息可以通过读取Oracle中元数据表格获取,或者TBLPROPERTIES...中查询结果的前5行如下 每一行对应其中一列的元数据信息,分别为【列名】【数据类型】【数据长度】【数据精度】【列备注】【表备注】 读取到python的表格中 # 读取sql语句 GetOracleMetaData...【列名】 【列的数据格式】【类的备注】 由于【列的数据格式】从Oracle中抽取,需要更改为与HIVE共有或兼容的格式,需要做以下的数据类型转换: timestamp => long , number

    13410

    Oracle-index索引解读

    索引对用户是透明的,无论表上是否有索引,sql语句的用法不变 oracle创建主键时会自动在该列上创建索引 ---- 为什么需要索引 数据在磁盘上是以块的形式存储的。...在创建索引时它就是默认的索引类型。B树索引可以是一个列的(简单)索引,也可以是组合/复合(多个列)的索引。 B树索引最多可以包括32列。...(列不重复值的个数)大时适合使用B数索引 ---- 位图索引 说明 创建位图索引时,oracle会扫描整张表,并为索引列的每个取值建立一个位图(位图中,对表中每一行使用一位(bit,0或者1)来标识该行是否包含该位图的索引列的取值...,如果为1,表示对应的rowid所在的记录包含该位图索引列值),最后通过位图索引中的映射函数完成位到行的ROWID的转换....使用create index时要将最常查询的列放在最前面 13. LONG(可变长字符串数据,最长2G)和LONG RAW(可变长二进制数据,最长2G)列不能创建索引 14.

    91240
    领券