1. 程式人生 > >JAVA面試題06-Mysql索引

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(