JAVA面試題06-Mysql索引
1.什麼場景下適合建立索引,什麼場景下不適合建立索引。?
1.1 where,order by,group by中頻繁出現,且資料分佈比較離散的列適合建立索引。比如有個使用者表,使用者名稱,手機號經常會作為查詢條件,且不同使用者使用者名稱,手機號都不同(資料較離散),因此適合建立索引。但是使用者的性別,雖然也會經常作為查詢條件,但是因為性別只有男,女,未知等幾種,資料不夠離散,因此不適合建立索引。為什麼要離散?
1.2 頻繁修改的列不適合建立索引。mysql索引基於B+樹實現,修改資料時,需要修改對應的索引。
2.聯合索引命中規則?
聯合索引命中規則為最左匹配原則(mysql索引基於B+樹實現)。
假設A,B,C三列建立了聯合索引,
能命中索引的
where A=xx
where A=xx and B=xx
where A=xx and B=xx and C=xx
不能命中索引的
where B=xx
where C=xx
where B=xx and c=xx
3.索引命中規則
擴充一下第二題,也是最左匹配(mysql索引基於B+樹實現),假設A列建立了索引
能命中的
<,<=,=,>,>=,BETWEEN,IN, like 'xx%'
不能命中的
<>,not in ,!=,like '%xx'
字串轉數字. 比如mobile varchar(11)
where mobile =131xxxxxxxx
對列進行函式運算的情況
where md5(password) =' xxxx'
NULL會導致索引形同虛設,所以在設計表結構時應避免NULL 的存在(用其他方式表達你想表達的NULL,比如 -1?)
4.mysql索引的資料結構實現。
簡單來說,mysql索引都是基於b+樹來實現的,感興趣的自己去搜一下,還是值得花點時間研究一下的。
非葉子節點只儲存子節點資料的範圍,資料只存在葉子節點中,
相關推薦
JAVA面試題06-Mysql索引
1.什麼場景下適合建立索引,什麼場景下不適合建立索引。? 1.1 where,order by,group by中頻繁出現,且資料分佈比較離散的列適合建立索引。比如有個使用者表,使用者名稱,手機號經常會作為查詢條件,且不同使用者使用者名稱,手機號都不同(資料較
java面試題06
char pri 姓名 創建數據庫 not into bigint color 建數據庫 題目: 數據庫 1、 表名:g_cardapply 字段(字段名/類型/長度): g_applyno varchar 8;//申請單號(關鍵字) g_applydate bigint
java面試題之----mysql表優化方案
mysql 引擎 它的 易維 range 概述 .com 設置 常用 本文轉載自segmentfault,原文鏈接:https://segmentfault.com/a/1190000006158186。 當MySQL單表記錄數過大時,增刪改查性能都會急劇下降,可以參考以
java後端開發面試題(MySQL資料庫)
1.mysql優化2.mysql常用的引擎有哪些,說說你對InnoDB的瞭解3.mysql瓶頸4.事務特性5.事務的隔離級別6.sql查詢每門課程成績都大於80分的學生姓名(表table,欄位sname,subject,score)select sname from tabe
Java面試題整理--資料庫MySQL(一)
1)關係型和非關係型資料庫的區別?關係型資料庫:是指採用了關係模型來組織資料的資料庫。可以理解成二維的excel表格,是一一對應關係。常見的關係型資料庫有:MySQL、Oracle、DB2、Microsoft SQL Server、Microsoft Access等;非關係型
阿里開發者招聘節 | 面試題06-07: MySQL的資料如何恢復到任意時間點
為幫助開發者們提升面試技能、有機會入職阿里,雲棲社群特別製作了這個專輯——阿里巴巴資深技術專家們結合多年的工作、面試經驗總結提煉而
Java面試題和解答(三)
增加 自旋 println class 答案 logs 聯網 get link 1、這段代碼大多數情況下運行正常,但是某些情況下會出問題。什麽時候會出現什麽問題?如何修正? public class MyStack { private List<S
java面試題
調用 strong 同步鎖 記錄 沒有 拋出異常 數據 sleep wait sleep()和wait()的區別 sleep是線程類的方法,它會讓出cpu去執行其他線程,當指定時間過後,會從新回到此線程上,但是雖然讓出了CPU ,並不會釋放對象鎖, wait是obje
java面試題一
情況 減少 元素 pro pin 內存大小 java_opts req -xms 個人的一點參考總結,如有雷同,純屬巧合! 1、hashmap的實現原理以及hashtable的線程安全是怎麽實現的?HashMap其實也是一個線性的數組實現的,所以可以理解為其存儲數據的容
java面試題-java基礎
runtime 都是 缺點 子類 true 大數 virtual 過程 面向連接 1.1java與其他語言相比,有什麽優點和缺點? 首先,java與c、c++相比,java是一種完全的面對對象的語言,雖然他的底層(運行時庫)使用c語言開發的,可是並不依賴於c,因為jav
Java(面試題):字符串截取
int lan out 試題 void trace 題目 replace odi 在Java中,字符串“abcd”與字符串“ab你好”的長度是一樣,都是四個字符。 但對應的字節數不同,一個漢字占兩個字節。 定義一個方法,按照指定的字節數來取子串。 如:對於“ab你好”,如果
Java面試題和解答(四)
aio sys main sina 數據 由於 ssd shm 檢測 1、JVM什麽情況下會GC,GC策略有哪些 當應用程序分配新的對象,GC的代的預算大小已經達到閾值,比如GC的第0代已滿;代碼主動顯式調用System.GC.Collect();其他特殊情況,比如,系統
100+經典Java面試題及答案解析
是什麽 自定義 我們 計數 接口類 同步方法 main err ans 面向對象編程(OOP) Java是一個支持並發、基於類和面向對象的計算機編程語言。下面列出了面向對象軟件開發的優點: 代碼開發模塊化,更易維護和修改。 代碼復用。 增強代碼的可靠性和靈活
java面試題2
pan ole light [0 -i att turn mat [] 1.冒泡排序 public static void test(){ int[] array = new int[]{1,4,5,8,9,34,4,32,65}; int tmp; for(
10個經典的Java面試題集合
支持 獲得 equal 效率 可用 ash 很快 鍵值對 shm 1.Java的HashMap是如何工作的? HashMap是一個針對數據結構的鍵值,每個鍵都會有相應的值,關鍵是識別這樣的值。 HashMap 基於 hashing 原理,我們通過 put ()和 g
Java面試題-線程安全
通過 釋放 運行時 ica work 面試題 條件 同時 strong 1. 什麽叫線程安全?servlet是線程安全嗎? 答:如果你的代碼所在的進程中有多個線程在同時運行,而這些線程可能會同時運行這段代碼。如果每次運行結果和單線程運行的結果是一樣的,而且其
java面試題(二)
imap 產生 java面試 大型 過程 ets ibm apache服務 廣泛 11、說出Servlet的生命周期,並說出Servlet和CGI的區別? Servlet被服務器實例化後,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣
java面試題整理(1)
pmap 復制 java對象 試題 取出 樹形 年輕代和老年代 com 足夠 1、Equals與==的區別? ==是判斷兩個變量或者實例是不是指向同一個內存地址 equals是判斷兩個變量或者實例所指向的內存地址中的值是不是相同 2、Object有哪些公用方法?
java面試題01
讀寫 esc direct syn 做到 window sele 開始 run 一、JAVA基礎 1、簡述你所知道的JAVA修飾符及各自的使用機制?(public、abstract、final、synchronized、super…) 01.public:允許所有客戶訪問
java面試題02
操作 保存 代碼 strac 重寫 exception pos api 內部使用 1.JAVA內部使用的編碼格式是(utf-8) 2. public class Threads2 implements Runnable { @Overridepublic void run(