成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊一聊如何利用索引提高性能

數據庫 前端
本章我們討論了關系數據庫中普通的鍵值索引存在的弱點,以及如何進行物理設計以提高性能。

 在關系數據庫中,表中數據普遍以無序的狀態存儲在磁盤上,在沒有相應索引時,若要對表中數據進行查詢,就只能全表檢索,將所有記錄挨個讀取,然后和查詢條件進行比較,顯然,這種方式會導致大量的磁盤 I/O 操作和 CPU 計算,消耗大量的系統時間,因此,建立索引就成了一個必須考慮的選項。

[[277293]]

使用 CREATE INDEX [索引名] on 表名 (列名,……) 語句可以為表中數據建立最常用的鍵值索引,而鍵值索引的實現大都采用 B+ 樹數據結構,它有以下一些性質:

1、 是一棵平衡樹,即從根節點到葉子節點的深度相差不超過 1;

2、 非葉子節點只保存鍵值和指向子節點的指針,不保存數據;

3、 葉子節點保存鍵值、對應記錄的地址及葉子節點的鏈表指針,鏈表中葉子節點是鍵值有序的

但這些性質就一定能保證查詢性能滿足用戶的需求嗎?下面,我們以對銀行賬戶進行時間段查詢為例,探討索引的性能問題。

為了方便說明問題,我們在這里把 B+ 樹簡化為 3 叉 B+ 樹,以賬號和交易日期作為鍵值,如下圖所示:

如何利用索引提高性能

如果我們要查詢賬號 A002 從 2000-01-01 到 2000-01-07 的交易流水,數據庫系統會首先要查找賬號為 A002、日期不早于 2000-01-01 的鍵值所在的葉子節點,結果是依次讀取索引塊 A、B、C,然后找出索引塊 C 中滿足條件的鍵值對應的記錄地址并讀出記錄返回,若索引塊 C 中最后一個日期早于或等于 2001-01-07,則可以根據葉子節點的鏈表直接讀取索引列 D,以此類推,直到某個索引塊的某個日期比 2001-01-07 大為止。

觀察上述過程,我們發現 2000-01-01 對應的記錄在數據頁 1,2000-01-02 和 2000-01-03 對應的記錄在數據頁 2,2000-01-04 對應的記錄則在數據頁 3,4 條記錄需要讀取 3 個數據頁,極端情況下甚至任意一條記錄都在不同的數據頁,而此時如果數據區中記錄已按鍵值序存儲則可以顯著減少磁盤 IO。更進一步,如果記錄數據直接保存在葉子節點,則可以減少查詢過程中索引頁與數據頁之間的跳讀,這對于機械硬盤的性能影響尤甚。

這些問題對于集算器的組表來說,可以非常輕松地得到解決。

我們還是以股票交易數據為例講解組表的使用。

如何利用索引提高性能

A2: 創建數據結構為 (sid,tdate,open,close,volume) 的組表,且指定 sid 和 tdate 為鍵,@r 指定數據按行存儲

A5: 將按 sid 和 tdate 有序的數據追加到組表中

A6: 以 sid 和 tdate 為鍵值建立索引 idx1

如何利用索引提高性能

A1: 讀取組表

A2: 定義根據索引 idx1 查詢數據的游標

A3: 取出游標中的數據

在建立索引 idx1 時,也可以將所需的數據都儲存在索引里,譬如要將 open、close、volume 這 3 列也儲存在索引 idx1 里,只需將前面表格里的A2.index(idx1;sid,tdate)改為A1.index(idx1; sid,tdate; open,close,volume)即可,這樣查詢時就可以不讀數據文件、只讀取索引文件,使查詢速度更快。

責任編輯:華軒 來源: 今日頭條
相關推薦

2020-08-24 07:12:17

前端CRP性能優化

2018-05-16 08:58:04

用戶畫像存儲

2024-03-08 09:51:12

Linux網絡性能

2020-12-29 05:33:40

TomcatSpringBoot代碼

2018-06-07 13:17:12

契約測試單元測試API測試

2023-03-05 18:40:39

iptables防火墻軟件

2018-11-30 12:48:36

SDS故障硬件

2021-01-28 22:31:33

分組密碼算法

2023-09-22 17:36:37

2020-05-22 08:16:07

PONGPONXG-PON

2019-12-17 10:06:18

CDMA高通4G

2022-03-08 16:10:38

Redis事務機制

2020-09-08 06:54:29

Java Gradle語言

2022-03-29 09:56:21

游戲版本運營

2021-01-01 09:01:05

前端組件化設計

2020-06-28 09:30:37

Linux內存操作系統

2020-08-12 08:34:16

開發安全We

2022-10-08 11:33:56

邊緣計算云計算

2022-11-26 00:00:06

裝飾者模式Component

2018-01-10 14:13:04

測試矩陣API測試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级黄在线观看 | 精品久久久久一区二区国产 | 精品av| 欧美日韩三级 | 一道本不卡 | 另类在线| 一区二区三区四区电影 | 神马九九 | www亚洲精品 | 欧美日韩淫片 | 亚洲欧美成人在线 | 日韩一区二区三区视频 | av影音资源 | 欧美日韩久久精品 | 国产一级视频免费播放 | 欧美一区免费在线观看 | 国产精品观看 | a天堂在线 | 97超级碰碰| 久久精品亚洲国产奇米99 | 欧美一区二区三区久久精品 | 九热在线 | 色综合一区二区 | 国产一区二区av | 久久av资源网 | 亚洲乱码一区二区三区在线观看 | 精品中文字幕久久 | 久久精品国产久精国产 | 日本三级电影在线看 | 日韩成人在线网址 | av在线免费观看网址 | 久久久久国产精品一区 | 在线成人av | 黄色男女网站 | 久久久久久综合 | 国产一区二区三区四区在线观看 | 精品国产区 | 91视频88av | 国产福利网站 | 日韩爱爱网站 | 国产91中文|