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

1.索引創建注意事項

適合的場景

1.頻繁使用where語句查詢的字段
2.關聯字段需要建立索
3.如果不創建索引,那么在連接的過程中,每個值都會進行一次全表掃描
4.分組和排序字段可以建立索引因為索引天生就是有序的,在分組和排序時優勢不言而喻
5.需要進行聚合統計的字段可以創建索引
6.比如需要對school字段進行count0操作:因
為B+樹相同的值都存儲在同一個葉子節點中統計速度很快但是并不是所有上訴的字段都可以建立索引,還需要考慮他是否是一下情況

不適合的場景

1.字段頻繁的更新 因為頻繁的更新除了修改表數據外還需要維護索引信息,B+樹調整會降低性能
2.字段取值重復率高,區分度低唯一性差的字段不適合創建索引
3.比如性別字段,取值過于
·參與列計算的列不適合創建索引,索引會失效

2.MySQL中的索引數量是否越多越好?為什么?

因為索引不論從時間還是空間上都是有一定成本的

1)時間

每次對表中的數據進行增刪改(NSERT、UPDATE或DELETE)的時候,索引也必須被更新,這會增加寫入操作的開銷。例如刪除了一個name為面試鴨的記錄,不僅主鍵索引上需要修改,如果name字段有索引,那么name索引也需要修改,所以索引越多需要?改的地方也就越多,時間開銷就大了,并且B+樹可能會有頁分裂、合并等操作,時間開銷就會更大。

還有一點需要注意:小ySQL有個查詢優化器,它需要分析當前的查詢,選擇最優的計劃,這過程就需要考慮選擇明那個索引的查詢成本低。如果索引過多,那么會導致優化器耗費更多的時間在選擇上,甚至可能因為數據的不準確而選擇了次優的索引。

2)空間

每建立一個二級索引,都需要新建一個B+樹,默認每個數據頁都是16KB,如果數據量很大,索引又很多,占用的空間可不小。

3.MySQL中如何進行SQL調優?

1.避免select*,只查詢必要的字段
2.合理設計索引,通過聯合索引進行覆蓋索引及索引下推技術的優化,減少回表的次數,提升效率
3.避免SQL中進行函數計算等操作,導致無法命中索引

4.避免使用like,導致全表掃描(如果符合最左前綴匹配原則可以走索引)】
5.注意使用聯合索引需滿足最左匹配原則
6.不要對無索引字段進行排序操作
7.連表查詢需注意不同字段的字符集保持一致
8.注意隱式類型轉換操作,會導致索引失效使用OR,兩邊需保持等值匹配且都為索引列,才會走索引

以上都是對SQL進行優化,避免索引失效等進行SQL調優,還可以從其他方面進行考慮,比如先分析SQL慢的原因

-索引失效
-多表oin
-查詢字段太多
-表中數據量太大
-索引區分度不高
-數據庫連接數不夠
-數據庫的表結構不合理
-數據庫IO或者CPU比較高
-數據庫參數不合理
-長事務導致的
-鎖競爭導致的長時間的等待

拓展:
1:為什么多表join會導致SQL慢?

MySQL是使用了嵌套循環(Nested.-Loop Join)】的方式來實現關聯查詢的,簡單點說就是要通過兩層循環,用第一張表做外循環,第二張表做內循環,外循環的每一條記錄跟內循環中的記錄作比較,符合條件的就輸出。而具體到算法實現上主要有simple nested loopblock nested loop和index nested loop這三種。而且這三種的效率都沒有特別高。小ySQL是使用了嵌套循環(Nested-Loop Join)的方式來實現關聯查詢的,如果有2張表join的話,復雜度最高是0(n2),3張表則足0n3)隨著表越多,表中的數據量越多,JOIN的效率會呈指數級下降。

2:不使用引oin,如何做關聯查詢?

主要有以下做法
1、在內存中自己做關聯,即先從數據庫中把數據查出來之后,我們在代碼中再進行二次查詢,然后再進行關聯。
2、數據冗余,那就是把一些重要的數據在表中做冗余,這樣就可以避免關聯查詢了。
3、寬表,就是基于一定的join關系,把數據庫中多張表的數據打平做一張大寬表,可以同步到ES或者干脆直接在數據庫中直接查都可以

3.數據量太大也會導致SQL慢,那怎么解決?

具體的解決方案有以下幾種:
1、數據歸檔,把歷史數據移出去,比如只保留最近半年的數據,半年前的數據做歸檔。
2、分庫分表、分區。把數據拆分開,分散到多個地方去,這里不詳細介紹了,我們的文檔中有分庫分表和分區的詳細介紹,不展開了。
3、使用第三方的數據庫,比如把數據同步到支持大數量查詢的分布式數據庫中,如oceanbase、

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

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

相關文章

vscode無法檢測到typescript環境解決辦法

有一個vitereacttypescript項目,在工作電腦上一切正常。但是,在我家里的電腦運行,始終無法檢測到typescript環境。即使出現錯誤的ts語法,也不會有報錯提示,效果如下:我故意將一個string類型,傳入…

【MCP開發】Nodejs+Typescript+pnpm+Studio搭建Mcp服務

MCP服務支持兩種協議,Studio和SSE/HTTP,目前官方提供的SDK有各種語言。 開發方式有以下幾種: 編程語言MCP命令協議發布方式PythonuvxSTUDIOpypiPython遠程調用SSE服務器部署NodejspnpmSTUDIOpnpmNodejs遠程調用SSE服務器部署… 一、初始化項…

vscode使用keil5出現變量跳轉不了和搜索全局不了

vscode使用keil5出現變量跳轉不了,或者未包含文件,或者未全局檢索; 參考如下文章后還會出現; 為什么vscode搜索欄只搜索已經打開的文件_vscode全局搜索只能搜當前文件-CSDN博客 在機緣巧合之下發現如下解決方式: 下載…

命名空間——網絡(net)

命名空間——網絡(net) 一、網絡命名空間:每個都是獨立的“網絡房間” 想象你的電腦是一棟大樓,每個網絡命名空間就是大樓里的一個“獨立房間”: 每個房間里有自己的“網線接口”(網卡)、“門牌…

一文讀懂16英寸筆記本的實際尺寸與最佳應用場景

當您搜索"16寸筆記本電腦長寬"時,內心真正在問的是什么?是背包能否容納?桌面空間是否足夠?還是期待屏幕尺寸與便攜性的完美平衡?這個看似簡單的尺寸數字背后,凝結著計算機制造商對用戶體驗的深刻…

Android Studio中創建Git分支

做一些Android項目時,有時候想要做一些實驗性的修改,這個實驗可能需要很多步驟,所以不是一時半會能完成的,這就需要在實驗的過程中不斷修改代碼,且要提交代碼,方便回滾或比較差異,但是既然是實驗…

內存可見性和偽共享問題

文章目錄什么是內存可見性問題為什么會出現可見性問題解決可見性問題的方法1. 使用volatile關鍵字2. 使用synchronized3. 使用java.util.concurrent包下的原子類什么是偽共享問題CPU緩存行偽共享的危害解決偽共享的方法1. 緩存行填充2. 使用Contended注解(JDK 8&…

Spring MVC 九大組件源碼深度剖析(三):ThemeResolver - 動態換膚的奧秘

文章目錄一、主題機制的核心價值二、核心接口設計三、四大實現類源碼解析1. FixedThemeResolver(固定主題策略)2. CookieThemeResolver(Cookie存儲策略)3. SessionThemeResolver(Session存儲策略)4. Abstra…

一、Docker本地安裝

((這里引用知乎上大佬的說法:https://www.zhihu.com/question/48174633 服務器虛擬化解決的核心問題是資源調配,而容器解決的核心問題是應用開發、測試和部署。 一、參考帖子 Ubuntu 的 |Docker 文檔 【docker】ubuntu完全卸載docker及再次安裝_ubuntu…

LeetCode 分類刷題:2962. 統計最大元素出現至少 K 次的子數組

題目給你一個整數數組 nums 和一個 正整數 k 。請你統計有多少滿足 「 nums 中的 最大 元素」至少出現 k 次的子數組,并返回滿足這一條件的子數組的數目。子數組是數組中的一個連續元素序列。示例 1:輸入:nums [1,3,2,3,3], k 2 輸出&#…

10分鐘掌握swift

整理一個 10分鐘掌握 Swift 的精華指南,用一個 Demo 串聯 Swift 的核心語法、數據結構、函數、類/結構體和閉包,讓你快速入門。1?? 基礎語法與變量import Foundation // 引入基礎庫// 變量和常量 var name: String "Alice" // 可變 let…

【完整源碼+數據集+部署教程】食品分類與實例分割系統源碼和數據集:改進yolo11-AggregatedAttention

背景意義 研究背景與意義 隨著全球食品產業的快速發展,食品安全和質量控制日益成為社會關注的焦點。食品分類與實例分割技術的應用,能夠有效提升食品識別的準確性和效率,為食品監管、營養分析以及智能餐飲等領域提供重要支持。傳統的食品識別…

C# 中的N+1問題

目錄 含義 影響 避免方法 1. 立即加載(Eager Loading) 2. 顯式加載(Explicit Loading) 3. 投影(Projection) 4. 批處理查詢 5. 禁用延遲加載 含義 N1 問題 是 ORM(對象關系映射&#x…

國內多光譜相機做得好的廠家有哪些?-多光譜相機品牌廠家

多光譜相機是一種能夠同時捕捉多個特定波段的光譜信息,這些波段覆蓋可見光、近紅外以及短波紅外等區域。廣泛應用于遙感、農業、環境監測、工業檢測、安防等領域。近年來,我國在多光譜技術領域取得了顯著進步,涌現出一批技術實力強、產品性能…

如何用外部電腦訪問本地網頁?

之前本來說用內網穿透工具來查看完成這個工具,結果感覺各種不符合心意,突然發現有更簡單的方法。如果想讓兩臺電腦在 同一局域網 內都能訪問運行在 http://localhost:5174/ 上的項目,而不需要使用內網穿透工具,可以通過以下方法實…

PromptPilot — AI 自動化任務的下一個環節

作者:陳大魚頭 github:https://github.com/KRISACHAN 郵箱:chenjinwen77@gmail.com PromptPilot 體驗地址:https://promptpilot.volcengine.com/ 前言 如果大家有關注 AI 相關新聞的話,一定會知道在 2025 年 6 月 11 日火山引擎 FORCE 原動力大會上,豆包大模型 1.6 系列…

[Responsive theme color] 動態更新 | CSS變量+JS操控 | 移動端-漢堡菜單 | 實現平滑滾動

第3章:CSS變量操控 歡迎回來🐻??? 通過前兩章,我們掌握了 動態主題定制 的交互邏輯,以及 色彩工具函數 如何實現色值格式轉換。 本章將揭示技術拼圖的最后一塊:CSS變量動態操控,解析JavaScript如何實…

數學建模 15 邏輯回歸與隨機森林

邏輯回歸(用于分類)用途:通過已有數據,計算出線性方程的參數w后,可以用于預測某一個物品屬于某一類的概率,[0,1];求解思想:邏輯回歸通過最大似然估計(Maximum Likelihood Estimation…

衡石使用指南嵌入式場景實踐之儀表盤嵌入

應用展示交互 應用集市展示應用時會與儀表盤、圖表進行交互操作,主要包括去分析、保存當前過濾快照、字段設置、刷新、全屏、嵌入、導出等功能。 保存當前過濾快照 儀表盤展示數據時往往使用過濾器來查看不同場景下的分析數據。用戶從一種場景切換到另一種場景&a…

Qt | 四種方式實現多線程導出數據功能

前言 在以往的項目開發中,在很多地方用到了多線程。針對不同的業務邏輯,需要使用不同的多線程實現方法,來達到優化項目的目的。本文記錄下在Qt開發中用到的多線程技術實現方法,以導出指定范圍的數字到txt文件為例,展示…