顺序表是存储位置相邻连续的,可以随即访问的一种数据结构;链表是通过指针来描述元素关系的一种数据结构 。运算时间的不同顺序表是一种随机存取结构,便于元素的随机访问,因此对于只进行查找的运算而很少做到插入和删除运算的应用,宜采用顺序表;链表是一种非随机存取结构,对任一结点的操作都必须是从头指针开始顺着链扫描才能取得 。
顺序表和链表的异同点有哪些?
顺序表是存储位置相邻连续的,可以随即访问的一种数据结构;链表是通过指针来描述元素关系的一种数据结构 。相同点都是线性表,是n个数据特性相同的元素组成的有限序列 。存储空间的不同顺序表的存储空间是静态的,要求预先分配空间;链表的存储空间是动态分配的,只要是有内存空间,就可动态申请空间 。运算时间的不同顺序表是一种随机存取结构,便于元素的随机访问,因此对于只进行查找的运算而很少做到插入和删除运算的应用,宜采用顺序表;链表是一种非随机存取结构,对任一结点的操作都必须是从头指针开始顺着链扫描才能取得 。
多表连接查询和多次单表查询哪个效率高?为什么?
如果数据量小的表,这样的设计意义不大,而且当然是单表速度快 。若在大数据量情况下,设计非常有意义 。在多表连接中注意数据的条目和外健,避免出行大量冗余数据导致性能下降 。下面我以Oracle讲讲数据查询的整个过程技术 。由于数据分布到数据块,在大量数据设计中可以将数据存储于多个数据块,在高并发进程的随机访问的情况下,能有效减少块冲突 同样的数据需要更多的数据块来存储,由于数据块的块头元信息大小固定,所以需要更多的空间来存储块头元信息 。
行长度过大容易导致行连接,从而导致Oracle获取数据块的效率降低 ,在行长度固定的前提下,单块能够存储更多的数据行,也就意味着Oracle一次I/O能读取更多的数据行 。适合连续顺序读或者存放大对象数据(如LOB数据) 由于大数据块可以存放更多的索引叶节点信息,容易引起争用,所以大数据块不适合存放索引叶节点信息 。
大量数据表的数据库参数设置DB_FILE_MULTIBLOCK_READ_COUNT表示Oracle一次顺序I/O读操作最多能读取的数据块块数 。该参数的默认值随操作系统的不同而不同 。在全表扫描或者索引快速扫描比较多的系统中(如DSS系统),建议将该值设置得较大 。但是DB_FILE_MULTIBLOCK_READ_COUNT参数受操作最大单次I/O大小的限制,大多数操作系统单次读操作的大小不能超过1MB,这也就意味着在8KB数据块大小的情况下,该参数最大值为128 。
【什么表可以随机访问,为什么使用多级页表】值得一提的是,该参数的大小还会影响Oracle CBO对执行计划的评估,如果设成较大值,Oracle的执行计划倾向于全表扫描 。当该参数设置为0或者保持默认时,CBO假设全表扫描时最多能连续读取8个数据块 。从Oracle 11R2开始,DB_FILE_MULTIBLOCK_READ_COUNT的取值算法如下:db_file_multiblock_read_count = min(1048576/db_block_size , db_cache_size/(sessions * db_block_size))注意 数据库参数BLOCK_SIZE在设定之后,在数据库生命周期内不可更改 。
推荐阅读
- 诛神什么职业好,圣骑士职业任务有
- 攻城掠地惊澜刀什么用,双面武将的奥秘
- 赛尔号新的新手送什么用,新手入门就能加属性
- 大天使封印是什么,天使长复活占据第一王女身体
- 西游降魔篇手游什么时候开服,《西游降魔篇3D》评测
- 猫牙不好吃什么?没有特殊限制哦!
- 长了牙的幼猫吃什么?这些食物都是你的选择!
- 养猫前要准备什么?做好万全准备不会慌
- 猫的内心世界是什么样的?这样的内心世界你可以看懂吗?
- 冠词有哪些,英语的冠词都有什么