北京JAVA基礎面試30天打卡10

1.最佳左前綴原則是什么

Q:什么是MySQL索引I的最左匹配原則?

A:最左匹配原則是指,在復合索引引中,查詢條件需要按照索引列的順序從最左側列開始依次匹配。只有查詢條件中的列按照索引的最左邊列開始進行匹配,索引引才能被有效使用。

Q:能否舉例說明復合索引在查詢時遵循最左匹配原則的情況?
A:假設有以下復合索引(name,age,city),以下查詢會遵循最左匹配原則:
SELECT * FROM User WHERE name ='Alice' AND age =30  

這里查詢條件首先匹配了name,接著匹配 age,所以可以有效地使用復合索引。

Q:如果查詢條件中的列沒有按索引順序給出,會發生什么?

A:如果查詢條件沒有按照索引的順序給出,MySQ將無法利用復合索引。例如:

SELECT* FROM User  WHERE  age =30 AND name = 'Alice'

在這種情況下,MySQL將不會使用復合索引l(name.age,city),因為查詢中沒有從最左側的name列開始。

Q:假設你有一個查詢非常慢,且你已經確定查詢使用了一個復合索引。你會如何診斷并優化這個查詢?

A:首先,可以使用EXPLAIN語句來查看查詢的執行計劃,確認是否使用了正確的索引。如果發現查詢沒有充分利用素引,可以檢查是否存在違反最左匹配原則的情況,調整查詢條件的順序。其他優化措施包括減少返回的列數、使用覆蓋索引等。

2.為什么MySQL使用B+樹?

B+樹在數據庫系統中具有以下幾個顯著優勢:

**1)高效的查找性能:**B+樹是一種自平衡樹,每個葉子節點到根節點的路徑長度相同,B+樹在插入和刪除節點時會進行分裂和合并操作,以保持樹的平衡,但它又會有一定的冗余節點,使得刪除的時候樹結構的變化小,更高效。查找、插入、刪除等操作的時間復雜度為O(logn),能夠保證在大數據量情況下也能有較快的響應時間。

**2)樹的高度增長不會過快,使得查詢磁盤的I/0次數減少:**B+樹不像紅黑樹,數據越多樹的高度增長就越快。它是多叉樹,非葉子節點僅保存主鍵或索引值和頁面指針,使得每頁能容納更多的記錄,因此內存中就能存放更多索引,客易命中緩存,使得查詢磁盤的I/O次數減少。
**3)范圍查詢能力強:**B+樹特別適合范圍查詢。因為葉子節點通過鏈表鏈接,從根節點定位到葉子節點查找到范圍的起點之后,只需要順序掃描鏈表即可遍歷后續的數據,非常高效。

在這里插入圖片描述

B+樹和B樹區別

1)B樹每個節點都存儲了完整的數據,而B+樹非葉子節點僅存儲key和指針,完整數據存儲在葉子節點。這使得B+樹可以在內存中存放更多索引頂,減少磁盤查詢次數
2)B+樹葉子組成了鏈表,便于區間查找,而B樹只能每一層遍歷查找。
3)B+樹查詢時間更平均、穩定,都需要從根節點掃描到葉子節點。而B樹則在非葉子節點就可能找到對應的數據返回。

3.MySQL三層B+樹能存多少數據?

在 MySQL 的InnoDB 存儲引擎中,B+樹默認數據頁大小
為 16KB。參數:每個節點頁大小為16KB(即16384字節)。假設每個數據記錄的主鍵和數據大小為1KB(一般會比這個小,但這里取整方便計算)。每個內部節點(非葉子節點)存儲的是指向子節點的指針和索引鍵。
在這里插入圖片描述

三層B+樹的存儲計算:

葉子節點: 第三層為葉子節點,每個葉子節點頁可存儲16條數據記錄(16KB÷1KB)。
第二層(中間層): 假設每個指針6字節和索引鍵(一般為bigint)的大小為8字節,那么每個中間節點頁可以指向1170個葉子節點【16KB轉成字節需要乘以1024,因此(161024÷(6+8)宇節)=1170】。
第一層(根節點): 根節點
可以指向1170個中間節點。
由此,三層B+樹大致能存儲的數據總量為:1170117016=21902400,一棵三層的B+樹在MySQL中可以存儲大約2000萬條記錄。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93159.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93159.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93159.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

五、ZooKeeper、Kafka、Hadoop、HBase、Spark、Flink集群化軟件的部署

五、ZooKeeper、Kafka、Hadoop、HBase、Spark、Flink集群化軟件的部署 文章目錄五、ZooKeeper、Kafka、Hadoop、HBase、Spark、Flink集群化軟件的部署1.作用主要作用(通俗說法)對實戰項目有什么用?(直接舉例)2.集群化軟…

下載及交叉編譯glib,記錄

下載及交叉編譯glib,記錄 編譯參見這篇博客 嵌入式arm交叉編譯移植bluez5.0最新教程_bluez移植-CSDN博客 編譯命令有更新: make -j4 CFLAGS"-Wno-format-overflow" glib庫的作用: glib 是 GNOME 項目下的一個基礎庫&#xff0c…

從 0 到 1 玩轉Claude code(藍耘UI界面版本):AI 編程助手的服務器部署與實戰指南

前言 藍耘 Coding UI 作為基于 Claude Code 的可視化工具,憑借對本地項目的深度掌控、與 Git 倉庫的無縫銜接以及直觀的交互界面,正在重構開發者的工作流。本文將帶你一步步完成從環境搭建到實戰使用的全流程,讓這款工具真正成為你的編程「副…

docker使用指定的MAC地址啟動podman使用指定的MAC地址啟動

docker指定固定的mac地址 1】創建自定義橋接網絡并配置 MAC 地址保留 docker network create --driver bridge custom_bridge2】啟動容器并指定使用自定義網絡 docker run -it --name your-container --network custom_bridge --mac-address 02:42:ac:11:00:02 your-image--mac…

抽獎程序web程序

使用html實現抽獎程序&#xff0c;沒有后臺&#xff0c;如果需要后續寫個后臺可以配置&#xff0c;沒有過多的介紹&#xff0c;看代碼吧 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><title>婚禮抽獎</…

【Python辦公】Excel轉json(極速版)-可自定義累加字段(如有重復KEY)

目錄 專欄導讀 ?? 亮點特性 ?? 安裝與運行 ??? 界面與區域說明 ?? 使用示例 ?? 使用建議 ? 常見問題(FAQ) ?? 技術要點 完整代碼 ?? 結語 專欄導讀 ?? 歡迎來到Python辦公自動化專欄—Python處理辦公問題,解放您的雙手 ?????? 博客主頁:請點擊——…

JavaScript 防抖(Debounce)與節流(Throttle)

在 JavaScript 前端開發中&#xff0c;處理高頻率事件&#xff08;如窗口調整、輸入框輸入、頁面滾動&#xff09;時&#xff0c;如果不加以控制&#xff0c;會導致性能問題&#xff0c;如頁面卡頓或資源浪費。防抖&#xff08;Debounce&#xff09;和節流&#xff08;Throttle…

探索無人機圖傳技術:創新視野與無限可能

近年來&#xff0c;無人機技術的飛速發展不僅改變了航空行業的格局&#xff0c;還深刻影響了多個領域的日常運作。無人機圖傳技術作為無人機的核心技術之一&#xff0c;憑借其精準的圖像傳輸能力和高效的遠程操作特性&#xff0c;正在成為各行各業的得力助手。從空中拍攝到實時…

Comfyui進入python虛擬環境

如果你的 Python 可執行文件&#xff08;python.exe&#xff09;位于 C:\comfyui\.venv\Scripts&#xff0c;那么 .venv 本身已經是一個虛擬環境&#xff0c;你只需要 激活它&#xff0c;而無需再創建一個新的虛擬環境。如何激活這個已有的虛擬環境&#xff1f; 1. 打開終端&am…

秋招春招實習百度筆試百度管培生筆試題庫百度非技術崗筆試|筆試解析和攻略|題庫分享

筆試介紹 百度非技術崗筆試采用的是規定時間統一筆試形式&#xff0c;管培生會有兩場考試分別是7月底和8月中旬&#xff0c;其他非技術類崗位一般在8月中旬開始。 行測題必考&#xff0c;有些崗位考簡答題&#xff0c;比如管培生以及產品經理等崗位。 筆試內容 筆試內容一…

低資源語言翻譯:數據增強與跨語言遷移學習策略

文章目錄一、低資源語言翻譯的挑戰1.1 數據稀缺性1.2 語言特性復雜1.3 評估困難二、數據增強策略&#xff08;Data Augmentation&#xff09;2.1 基于單語數據的增強2.2 基于平行數據的增強2.3 多模態數據增強三、跨語言遷移學習策略&#xff08;Cross-Lingual Transfer Learni…

【每天一個知識點】時間序列聚類

一、什么是時間序列聚類&#xff1f;如果把數據比作一本書&#xff0c;那么時間序列&#xff08;Time Series&#xff09;就是一本按時間順序記錄事件的日記。它可能是股票每天的價格波動、某臺機器的溫度曲線、一個城市的空氣質量變化&#xff0c;甚至是人的心電信號。時間序列…

對抗損失(GAN)【生成器+判斷器】

這個是啥呢&#xff0c;搞圖片生成用的。我搜了下&#xff0c;把整體流程記錄下&#xff0c;過程中會用到GAN準備數據集&#xff08;真實圖像素材&#xff09; 目標生成人臉的&#xff0c;你像游戲注冊時選一個臉。捏臉。那么準備真實人臉圖片老規矩&#xff0c;縮放裁剪…

5分鐘入門C++

這是5分鐘入門 C 的精簡 Demo&#xff0c;盡量涵蓋核心概念&#xff1a;變量、函數、類、控制流、STL 容器&#xff0c;讓你快速理解 C 的基本用法。#include <iostream> // 輸入輸出 #include <vector> // 動態數組 #include <algorithm> // 常用算法…

java注釋功能

為了優化代碼的使用&#xff0c;分享記錄相關注釋功能。 單行注釋 // 這是單行注釋文字多行注釋 /* 這是多行注釋文字 這是多行注釋文字 注意&#xff1a;多行注釋不能嵌套使用。 */文檔注釋 /**- 這是文檔注釋文字- */注釋的作用 描述類或方法的功能&#xff0c;方便別人和自…

(論文速讀)DiffusionDet - 擴散模型在目標檢測中的開創性應用

論文題目&#xff1a;DiffusionDet: Diffusion Model for Object Detection&#xff08;DiffusionDet:物體檢測的擴散模型&#xff09;會議&#xff1a;ICCV2023摘要&#xff1a;我們提出了DiffusionDet&#xff0c;這是一個新的框架&#xff0c;它將物體檢測描述為從噪聲盒到目…

LangChain簡介

LangChain 是一個用于構建基于大語言模型&#xff08;LLM&#xff09;的應用程序的開源框架&#xff0c;它提供了一套工具、組件和接口&#xff0c; 可以將 LLM 模型、向量數據庫、交互層 Prompt、外部知識、外部工具整合到一起&#xff0c;進而可以自由構建 LLM 應用。 LangCh…

為什么哈希表(字典)的查詢速度有時會突然變慢

哈希表&#xff08;在許多語言中被稱為“字典”或“關聯數組”&#xff09;的查詢速度&#xff0c;在理想情況下&#xff0c;應是接近“瞬時”的常數時間&#xff0c;然而&#xff0c;在特定場景下&#xff0c;其性能之所以會突然、無征兆地變慢&#xff0c;其根源&#xff0c;…

whisper 語種檢測學習筆記

目錄 transformers推理&#xff1a; transformers 源代碼 網上的語種檢測調用例子&#xff1a; 語種檢測 api transformers推理&#xff1a; https://github.com/openai/whisper/blob/c0d2f624c09dc18e709e37c2ad90c039a4eb72a2/whisper/decoding.py waveform, sample_rat…

第1節 從函數到神經網絡:AI思路的逆襲之路

&#x1f914; 開篇靈魂拷問 是不是覺得AI知識體系龐大到嚇人&#xff1f;看了一堆快餐視頻還是云里霧里&#xff1f;別慌&#xff01;這個系列就是要幫你打通任督二脈&#xff0c;用"既快又慢、既深入又膚淺、既有趣又嚴肅"的方式講透AI基礎知識&#xff01; &…