目錄
11、最佳化資料庫的方法" >11、最佳化資料庫的方法
#MySQL資料庫最佳化的八大方式(經典必看)點選取得" >#MySQL資料庫最佳化的八大方式(經典必看)點選取得
" >#19. 簡單描述mysql中,索引,主鍵,唯一索引,聯合索引的區別,對資料庫的效能有何影響(從讀寫兩方面)(新浪網技術部)
20.資料庫中的事務是什麼?" >20.資料庫中的事務是什麼?
21.了解XSS攻擊嗎?如何防止? " >21.了解XSS攻擊嗎?如何防止?
22.SQL注入漏洞產生的原因?如何防止? " >22.SQL注入漏洞產生的原因?如何防止?
防止SQL注入的方式:" >防止SQL注入的方式:
25、 對於關係型資料庫而言,索引是相當重要的概念,請回答有關索引的幾個問題:" >25、 對於關係型資料庫而言,索引是相當重要的概念,請回答有關索引的幾個問題:
#a)、索引的目的是什麼? " >#a)、索引的目的是什麼?
b)、索引對資料庫系統的負面影響是什麼? " >b)、索引對資料庫系統的負面影響是什麼?
c)、為資料表建立索引的原則有哪些? " >c)、為資料表建立索引的原則有哪些?
d) 、 什麼情況下不宜建立索引? " >d) 、 什麼情況下不宜建立索引?
26、 簡述在MySQL資料庫中MyISAM和InnoDB的區別" >26、 簡述在MySQL資料庫中MyISAM和InnoDB的區別
28、 寫出三種以上MySQL資料庫儲存引擎的名稱(提示:不區分大小寫)" >28、 寫出三種以上MySQL資料庫儲存引擎的名稱(提示:不區分大小寫)
33、Myql中的交易回溯機制概述" >33、Myql中的交易回溯機制概述
首頁 資料庫 mysql教程 MYSQL面試題(一)

MYSQL面試題(一)

Mar 22, 2018 pm 01:17 PM
mysql 試題

本文主要和大家分享MYSQL面試題(一),希望能幫助大家。

【相關專題推薦:mysql面試題(2020)】

1. 如何設計一個高並發的系統

資料庫的最佳化,包括合理的事務隔離等級、SQL語句優化、索引的最佳化

使用緩存,盡量減少資料庫IO

分散式資料庫、分散式快取

伺服器的負載平衡

##2 . 鎖定的最佳化策略

① 讀寫分離

② 分段加鎖

③ 減少鎖持有的時間

④ 多個執行緒盡量以相同的順序去取得資源

等等,這些都不是絕對原則,都要根據情況,例如不能將鎖的粒度過於細化,不然可能會出現執行緒的加鎖和釋放次數過多,反而效率不如一次加一把大鎖。這部分跟面試官談了很久

3. 索引的底層實作原理與最佳化

B+樹,經過最佳化的B+

主要是在所有的葉子結點中增加了指向下一個葉子節點的指針,因此InnoDB建議為大部分錶使用預設自增的主鍵作為主索引。

4. 什麼情況下設定了索引但無法使用 

① 以「%」開頭的LIKE語句,模糊符合

#② OR語句前後沒有同時使用索引

③ 資料型別出現隱含轉換(如varchar不加單引號的話可能會自動轉換為int型)

#5 . SQL語句的最佳化 

order by要怎麼處理

alter盡量將多次合併為一次

insert和delete也需要合併

#等等

6. 實作中如何最佳化MySQL

我當時是按以下四條依序回答的,他們四條從效果上第一條影響最大,後面越來越小。

① SQL語句及索引的最佳化

資料庫表結構的最佳化

系統配置的最佳化

硬體的最佳化

8. sql注入的主要特徵

變種極多,攻擊簡單,危害極大

9. sql注入的主要危險

未授權操作資料庫的資料

惡意纂改網頁

私人新增系統帳號或是資料庫使用者帳號

網頁掛木馬

11、最佳化資料庫的方法

#MySQL資料庫最佳化的八大方式(經典必看)點選取得

· 選取最適用的欄位屬性,盡量減少定義欄位寬度,盡量把欄位設定NOTNULL,例如'省份'、'性別'最好適用ENUM

· #使用連接(JOIN)來取代子查詢

· 適用聯合(UNION)來取代手動建立的暫存資料表

· 交易處理

· #鎖定表、最佳化交易處理

##· 適用外鍵,最佳化鎖定表

· 建立索引

· #優化查詢語句

#19. 簡單描述mysql中,索引,主鍵,唯一索引,聯合索引的區別,對資料庫的效能有何影響(從讀寫兩方面)(新浪網技術部)

索引是一種特殊的檔案(InnoDB資料表上的索引是表空間的一個組成部分),它們包含著對資料表裡所有記錄的參考指標。
普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對資料的存取速度。
普通索引允許被索引的資料列包含重複的值。如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該用關鍵字UNIQUE把它定義為一個唯一索引。也就是說,唯一索引可以保證資料記錄的唯一性。
主鍵,是一種特殊的唯一索引,在一張表中只能定義一個主鍵索引,主鍵用於唯一標識一筆記錄,使用關鍵字 PRIMARY KEY 來創建。
索引可以覆寫多個資料列,如像INDEX(columnA, columnB)索引,這就是聯合索引。
索引可以極大的提高資料的查詢速度,但是會降低插入、刪除、更新表的速度,因為在執行這些寫入操作時,還要操作索引檔。 #

20.資料庫中的事務是什麼?

#交易(transaction)是作為一個單元的一組有序的資料庫操作。如果群組中的所有操作都成功,則認為事務成功,即使只有一個操作失敗,事務也不成功。如果所有操作完成,交易則提交,其修改將作用於所有其他資料庫程序。如果一個操作失敗,則交易將回滾,該事務所有操作的影響都將取消。 ACID 四大特性,原子性、隔離性、一致性、持久性。

21.了解XSS攻擊嗎?如何防止?

XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個特權模式去執行攻擊者建構的腳本,然後利用不安全的Activex控制項執行惡意的行為。
使用htmlspecialchars()函數將提交的內容過濾,使字串裡面的特殊符號實體化。

22.SQL注入漏洞產生的原因?如何防止?

SQL注入產生的原因:程式開發過程中不注意規範書寫sql語句和對特殊字元進行過濾,導致客戶端可以透過全域變數POST和GET提交一些sql語句正常執行。

防止SQL注入的方式:

開啟設定檔中的magic_quotes_gpc 和magic_quotes_runtime設定

#執行sql語句時使用addslashes進行sql語句轉換

#Sql語句書寫盡量不要省略雙引號和單引號。

過濾掉sql語句中的一些關鍵字:update、insert、delete、select、 * 。

提高資料庫表和欄位的命名技巧,對一些重要的欄位依照程式的特性命名,取不易被猜到的。

Php設定檔中設定register_globals為off,關閉全域變數註冊

控制錯誤訊息,不要在瀏覽器上輸出錯誤訊息,將錯誤訊息寫到日誌檔案中

25、 對於關係型資料庫而言,索引是相當重要的概念,請回答有關索引的幾個問題:

#a)、索引的目的是什麼?

快速存取資料表中的特定信息,提高檢索速度

##建立唯一性索引,保證資料庫表中每一行資料的唯一性。

加速表和表格之間的連接

使用分組和排序子句進行資料檢索時,可以顯著減少查詢中分組和排序的時間

b)、索引對資料庫系統的負面影響是什麼?

負面影響:
建立索引和維護索引需要耗費時間,這個時間隨著資料量的增加而增加;索引需要佔用實體空間,不光是表需要佔用資料空間,每個索引也需要佔用物理空間;當對錶進行增、刪、改、的時候索引也要動態維護,這樣就降低了資料的維護速度。

c)、為資料表建立索引的原則有哪些?

在最頻繁使用的、使用以縮小查詢範圍的欄位上建立索引。

在頻繁使用的、需要排序的欄位上建立索引

d) 、 什麼情況下不宜建立索引?

對於查詢中很少涉及的欄位或重複值比較多的資料列,不宜建立索引。

對於一些特殊的資料類型,不宜建立索引,例如文字欄位(text)等

26、 簡述在MySQL資料庫中MyISAM和InnoDB的區別

#區別於其他資料庫的最重要的特點就是其插件式的表儲存引擎。切記:儲存引擎是基於表格的,而不是資料庫。

InnoDB與MyISAM的差異:

#InnoDB儲存引擎:## 主要面向OLTP(Online Transaction Processing,線上事務處理)的應用,是第一個完整支援ACID事務的儲存引擎(BDB第一個支援事務的儲存引擎,已經停止開發)。

特點:

· 行鎖定設計、支援外鍵,支援事務,支援並發,鎖定粒度是支援mvcc得行級鎖定;

 MyISAM儲存引擎: 是MySQL官方提供的儲存引擎,主要針對OLAP(Online Analytical Processing,線上分析處理)的應用。
特點:

不支援事務,鎖定粒度是支援並發插入得表級鎖定,支援表所和全文索引。操作速度快不能讀寫操作太頻繁#

 27、解釋MySQL外連接、內連接與自連接的差異

先說什麼是交叉連接: 交叉連接又叫笛卡爾積,它是指不使用任何條件,直接將一個表的所有記錄和另一個表中的所有記錄一一匹配。

內連結# 則是只有條件的交叉連接,根據某個條件篩選出符合條件的記錄,不符合條件的記錄不會出現在結果集中,即內連接只連接匹配的行。
外連接# 其結果集中不僅包含符合連接條件的行,還會包含左表、右表或兩個表中
的所有資料行,這三種情況依序稱之為左外連接,右外連接,和全外連接。

左外連接,也稱左連接,左表為主表,左表中的所有記錄都會出現在結果集中,對於那些在右表中並沒有符合的記錄,仍然要顯示,右邊對應的那些欄位值以NULL來填入。右外連接,也稱右連接,右表為主表,右表中的所有記錄都會出現在結果集中。左連接和右連接可以互換,MySQL目前還不支援全外連接。

28、 寫出三種以上MySQL資料庫儲存引擎的名稱(提示:不區分大小寫)

MyISAM、InnoDB、BDB(BerkeleyDB)、Merge、Memory(Heap)、Example、Federated、
Archive、CSV、Blackhole、MaxDB 等等十幾個引擎

33、Myql中的交易回溯機制概述

交易是使用者定義的一個資料庫操作序列,這些操作要麼全做要麼全不做,是一個不可分割的工作單位,事務回滾是指將該交易已經完成的對資料庫的更新操作撤銷。

要同時修改資料庫中兩個不同表時,如果它們不是一個交易的話,當第一個表修改完,可能第二個表修改過程中出現了異常而沒能修改,此時就只有第二個表依舊是未修改之前的狀態,而第一個表已經被修改完畢。而當你把它們設定為一個事務的時候,當第一個表修改完,第二表修改出現異常而沒能修改,第一個表和第二個表都要回到未修改的狀態,這就是所謂的事務回滾

2. SQL語言包含哪幾部分?每部分都有哪些操作關鍵字?

答案:SQL語言包含資料定義(DDL)、資料操弄(DML),資料控制(DCL)、資料查詢(DQL)四個部分。

資料定義:Create Table,Alter Table,Drop Table, Craete/Drop Index等

#資料操縱:Select ,insert,update,delete,

#資料控制:grant,revoke

##################################################### ###資料查詢:###select#######

3. 完整性限制包括哪些?

答案:資料完整性(Data Integrity)是指資料的精確(Accuracy)和可靠性(Reliability)。

分成以下四類:

#1) 實體完整性:規定表的每一行在表中是惟一的實體。

2) 域完整性:是指表中的列必須滿足某種特定的資料類型約束,其中約束又包括取值範圍、精度等規定。

3) 參照完整性:是指兩個表的主關鍵字和外關鍵字的資料應一致,並保證了表之間的資料的一致性,防止了數據遺失或無意義的資料在資料庫中擴散。

4) 使用者定義的完整性:不同的關聯式資料庫系統根據其應用環境的不同,往往還需要一些特殊的限制條件。使用者定義的完整性即是針對某個特定關係資料庫的約束條件,它反映某一具體應用必須滿足的語意要求。

 

與表格相關的限制:包含欄位限制(NOT NULL(非空白限制))和資料表約束(PRIMARY KEY、foreign key、c​​heck、UNIQUE) 。

 

4.  什麼是事務?及其特性?

答案:交易:是一系列的資料庫操作,是資料庫應用的基本邏輯單位。

交易特性:

#(1)原子性:即不可分割性,事務要麼全部被執行,要麼就全部不被執行。

2)一致性或可串性。交易的執行使得資料庫從一種正確狀態轉換成另一種正確狀態

3)隔離性。在事務正確提交之前,不允許把該事務對資料的任何變更提供給任何其他事務,

4) 持久性。交易正確提交後,其結果將永久保存在資料庫中,即使在交易提交後有了其他故障,事務的處理結果也會被保存。

或這樣理解:

#交易就是被綁定在一起作為一個邏輯工作單元的SQL語句分組,如果任何一個語句操作失敗那麼整個操作就失敗,以後操作就會回滾到操作前狀態,或是上有個節點。為了確保要么執行,要么不執行,就可以使用事務。要將有組語句當作交易來考慮,就需要透過ACID測試#,即原子性,一致性,隔離性和持久性。

5. 什麼是鎖定?

  答:資料庫是一個多用戶使用的共享資源。當多個使用者並發地存取資料時,在資料庫中就會產生多個事務同時存取相同資料的情況。若對並發操作不加控制就可能會讀取和儲存不正確的數據,破壞資料庫的一致性。

 

加上鎖定是實現資料庫並發控制的一個非常重要的技術。當交易在對某個資料物件進行操作前,先向系統發出請求,對其加鎖。加鎖後事務就對該資料物件有了一定的控制,在該事務釋放鎖定之前,其他的事務不能對此資料物件進行更新操作。

基本鎖定類型:鎖定包含行級鎖定和表格層級鎖定

6. 什麼叫視圖?遊標是什麼?

答案:檢視是虛擬的表,具有和實體表相同的功能。可以對視圖進行增,改,查,操作,視圖通常是有一個表或多個表的行或列的子集。對視圖的修改不影響基本表。它使得我們獲取資料更容易,相較於多表查詢。

  遊標:是查詢出來的結果集合作為一個單元來有效的處理。遊標可以定在該單元中的特定行,從結果集的目前行檢索一行或多行。可以對結果集目前行做​​修改。一般不使用遊標,但是需要逐條處理資料的時候,遊標顯得十分重要。

7. 什麼是預存程序?用什麼來呼叫?

#回答:預存程序是一個預編譯的SQL語句,優點是允許模組化的設計,就是說只需創建一次,以後在該程式中就可以調用多次。如果某次操作需要執行多次SQL,使用預存程序比單純SQL語句執行快。可以用一個命令物件來呼叫預存程序。

8. 索引的作用?和它的優點缺點是什麼?

#答案:索引就一種特殊的查詢表,資料庫的搜尋引擎可以利用它加速資料的檢索。它很類似與現實生活中書的目錄,不需要查詢整本書內容就可以找到想要的資料。索引可以是唯一的,建立索引允許指定單一列或是多個列。缺點是它減慢了資料輸入的速度,同時也增加了資料庫的尺寸大小。

9. 如何通俗地理解三個範式?

答案:第一個範式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解;

第二範式:2NF是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性; 

######## #第三範式:###3NF是對字段冗餘性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗餘。 。 ###############範式化設計優缺點###:################優點###:###################################

可以盡量減少資料冗餘,使得更新快,體積小

#缺點:對於查詢需要多個表進行關聯,減少寫得效率增加讀得效率,更難進行索引優化

#反範式化:

優點:可以減少表得關聯,可以更好得進行索引優化

#缺點:資料冗餘以及資料異常,資料要修改需要更多的成本

10. 什麼是基本表?什麼是視圖?

  

#答案:基本表是本身獨立存在的表,在 SQL 中一個關係就對應一個表。  視圖是從一個或幾個基本表匯出的表。視圖本身不獨立儲存在資料庫中,是一個虛擬表  

11. 試述視圖的優點?

#答案:(1) 視圖能夠簡化使用者的操作 (2) 視圖使用戶能以多種角度看待相同資料; (3) 視圖為資料庫提供了一定程度的邏輯獨立性; (4) 視圖能夠對機密資料提供安全保護。

12. NULL是什麼意思

#答案:NULL這個值表示UNKNOWN(未知):它不表示“”(空字串)。對NULL這個值的任何比較都會產生一個NULL值。您不能把任何值與一個 NULL值進行比較,並在邏輯上希望得到一個答案。

使用IS  NULL來進行NULL判斷

13. 主鍵、外鍵和索引的差異?

主鍵、外鍵和索引的差異

定義:

# 主鍵--唯一標識一筆記錄,不能有重複的,不允許為空

 外鍵--表的外鍵是另一表的主鍵, 外鍵可以有重複的, 可以是空值

 索引--該欄位沒有重複值,但可以有一個空值

 

 

#作用:

 主鍵--用來確保資料完整性

 外鍵--用來和其他表格建立聯繫用的

 索引--是提高查詢排序的速度

個數:

 主鍵--主鍵只能有一個

 外鍵- -一個表可以有多個外鍵

 索引--一個表格可以有多個唯一索引

## 

#14. 你可以用什麼來確保表格裡的欄位只接受特定範圍裡的值?

#答案:Check限制,它在資料庫表格裡被定義,用來限制輸入該列的值。

觸發器也可以被用來限制資料庫表格裡的欄位能夠接受的值,但是這種辦法要求觸發器在表格裡被定義,這可能會在某些情況下影響到性能。

15. 說說對SQL語句最佳化有哪些方法? (選擇幾條)

1)Where子句中:where表之間的連接必須寫在其他Where條件之前,那些可以過濾掉最大數量記錄的條件必須寫在Where子句的末尾.HAVING最後。

2)用EXISTS取代IN、用NOT EXISTS取代NOT IN。

3) 避免在索引列上使用計算

4)避免在索引列上使用IS NULL和IS NOT NULL

5)對查詢進行最佳化,應盡量避免全表掃描,首先應考慮在 where 及order by 所涉及的欄位上建立索引。

6)應盡量避免在 where 子句中對欄位進行null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描

7)應盡量避免在 where 子句中對欄位進行表達式操作,這將導致引擎放棄使用索引而進行全表掃描

16. SQL語句中'相關子查詢'與'非相關子查詢'有什麼區別?

答:子查詢:嵌套在其他查詢中的查詢稱為。

子查詢又稱為內部,而包含子查詢的語句稱之外部查詢(又稱主查詢)。

所有的子查詢可以分為兩類,即相關子查詢和非相關子查詢

#(1)非相關子查詢是獨立於外部查詢的子查詢,子查詢總共執行一次,執行完畢後將值傳遞給外部查詢。

2)相關子查詢的執行依賴外部查詢的數據,外部查詢執行一行,子查詢就執行一次。

故非相關子查詢比相關子查詢效率高

17. char和varchar的差別?

#答案:是固定長度的類型,varchar則是一種可變長度的類型,它們的差異是:  

char(M)類型的資料列裡,每個值都佔用M個位元組,如果某個長度小於M,MySQL就會在它的右邊用空格字元補足. (在檢索作業中那些填補出來的空格字元會被去掉)在varchar(M)類型的資料列裡,每個值只佔用剛好夠用的位元組再加上一個用來記錄其長度的位元組(即總長度為L+1位元組).

varchar得適用場景:

#字串列得最大長度比平均長度大很多 2.字串很少被更新,容易產生儲存碎片3.使用多位元組字元集儲存字串

C##har得場景:

    儲存具有近似得長度(

md5值,身分證,手機號),長度比較短小得字串(因為varchar需要額外空間記錄字串長度),更適合經常更新得字符串,更新時不會出現頁分裂得狀況,避免出現儲存碎片,獲得更好的io效能

#18. Mysql 的儲存引擎,myisam和innodb的差別。

答案:簡單的表達:

#MyISAM 是非交易的儲存引擎;適合用於頻繁查詢的應用;表鎖,不會出現死鎖;適合小數據,小並發

innodb是支援事務的儲存引擎;合於插入和更新操作比較多的應用;設計合理的話是行鎖(最大差異就在鎖的層級);適合大資料,大並發。

19. 資料表類型有哪些

       答:MyISAM、InnoDB、HEAP、BOB,ARCHIVE,CSV等。

       MyISAM:成熟、穩定、容易管理,快速讀取。有些功能不支援(交易等),表級鎖定。

       InnoDB:支援事務、外鍵等功能、資料列鎖定。空間佔用大,不支援全文索引等。

20. MySQL資料庫作發布系統的存儲,一天五萬條以上的增量,預計運維三年,怎麼優化?

a. 設計良好的資料庫結構,允許部分資料冗餘,盡量避免join查詢,提高效率。

b. 選擇合適的表格欄位資料類型和儲存引擎,適當的添加索引。

c. mysql庫主從讀寫分開。 ######

d. 找出規律分錶,減少單表中的資料量提高查詢速度。

e。增加緩存機制,例如memcached,apc等。

f. 不常改變的頁面,產生靜態頁面。

g. 寫出高效率的SQL。例如SELECT * FROM TABEL 改為SELECT field_1, field_2, field_3 FROM TABLE.

21. 對於大流量的網站,您採用什麼樣的方法來解決各頁訪問量統計問題?

答案:a. 確認伺服器是否能支撐目前存取量。

b. 最佳化資料庫存取。

c. 禁止外部存取連結(盜鏈), 例如圖片盜鏈。

d. 控制檔下載。

e. 使用不同主機分流。

f. 使用瀏覽統計軟體,了解訪問量,有針對性的進行最佳化。

4、如何進行SQL最佳化? (關於後邊的解釋同學可以進行理解,到時根據自己的理解把大體意思說出來即可)

答:

1)選擇正確的儲存引擎

#以 MySQL為例,包含兩個儲存引擎MyISAM 和InnoDB,每個引擎都有優點和缺點。

MyISAM 適合一些需要大量查詢的應用,但其對於有大量寫入操作並不是很好。甚至你只是需要update一個字段,整個表都會被鎖起來,而別的進程,就算是讀進程都無法操作直到讀取操作完成。另外,MyISAM 對於 SELECT COUNT(*) 這類的計算是超快無比的。

InnoDB 的趨勢會是一個非常複雜的儲存引擎,對於一些小的應用,它會比 MyISAM 還要慢。但是它支援「行鎖」 ,於是在寫操作比較多的時候,會更優秀。並且,他也支援更多的高階應用,例如:事務。

2)最佳化欄位的資料型別

#記住一個原則,越小的列會越快。如果一個表格只會有幾列罷了(比如說字典表,配置表),那麼,我們就沒有理由使用 INT 來做主鍵,使用 MEDIUMINT, SMALLINT 或是更小的 TINYINT 會更經濟一些。如果你不需要記錄時間,使用 DATE 會比 DATETIME 好得多。當然,你也需要留夠足夠的擴充空間。

3)為搜尋欄位新增索引

#索引不一定就是給主鍵或是唯一的字段。如果在你的表中,有某個字段你總是要會經常用來做搜索,那麼最好是為其建立索引,除非你要搜索的字段是大的文本字段,那應該建立全文索引。

#

(4)避免使用Select *從資料庫讀出越多的數據,那麼查詢就會變得越慢。並且,如果你的資料庫伺服器和WEB伺服器是兩台獨立的伺服器的話,這也會增加網路傳輸的負載。即使你要查詢資料表的所有字段,也盡量不要用*通配符,善用內建提供的字段排除定義也許能給帶來更多的便利。

(5)使用 ENUM 而不是 VARCHAR

#ENUM 類型是非常快速且緊密的。在實際上,其保存的是 TINYINT,但其外表上顯示為字串。這樣一來,用這個字段來做一些選項清單變得相當的完美。例如,性別、民族、部門和狀態之類的這些欄位的取值是有限且固定的,那麼,你應該使用 ENUM 而不是 VARCHAR。

(6)盡可能的使用NOT NULL

#除非你有一個很特別的原因去使用 NULL值,你應該總是讓你的字段保持NOT NULL。 NULL其實需要額外的空間,而且,在你進行比較的時候,你的程式會更複雜。 當然,這裡並不是說你就不能使用NULL了,現實情況是很複雜的,還是會有些情況下,你需要使用NULL值。

(7)固定長度的表會更快

#如果表中的所有欄位都是「固定長度」的,整個表會被認為是“static” 或“fixed-length”。 例如,表中沒有以下類型的欄位: VARCHAR,TEXT,BLOB。只要你包括了其中一個這些字段,那麼這個表就不是「固定長度靜態表」了,這樣,MySQL 引擎會用另一種方​​法來處理。

固定長度的表會提高效能,因為MySQL搜尋得會更快一些,因為這些固定的長度是很容易計算下一個資料的偏移量的,所以讀取的自然也會很快。而如果欄位不是定長的,那麼,每次要找下一條的話,就需要程式找到主鍵。

並且,固定長度的表格也更容易被快取和重建。不過,唯一的副作用是,固定長度的字段會浪費一些空間,因為定長的字段無論你用不用,他都是要分配那麼多的空間。


#22,為表中得字段選擇合適得資料類型(物理設計)

 欄位類型優先權: 整形>date,time>enum,char>varchar>blob,text

 優先考慮數字類型,其次是日期或二進位類型,最後是字串類型,同等級得資料類型,應該優先選擇佔用空間小的數據型態

23:儲存時期

Datatime:以YYYY-MM-DD HH:MM: SS 格式儲存時期時間,精確到秒,佔用8個位元組得儲存空間,datatime類型與時區無關

#T##imestamp:以時間戳格式存儲,佔用4個位元組,範圍小1970-1-1到2038-1-19,顯示依賴於所指定得時區,預設在第一個列行的資料修改時可以自動得修改timestamp列得值

Date:(生日)佔用得字節數比使用字串.datatime.int儲存少,使用date只需要3個字節,儲存日期月份,還可以利用日期時間函數進行日期間得計算

Time:儲存時間部分得資料

注意:不要使用字串類型來儲存日期時間資料(通常比字串佔用得儲存空間小,在進行查找過濾可以利用日期得函數)

使用int儲存日期時間不如使用timestamp類型。

相關推薦:

一些MySQL面試題整理

以上是MYSQL面試題(一)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MySQL的角色:Web應用程序中的數據庫 MySQL的角色:Web應用程序中的數據庫 Apr 17, 2025 am 12:23 AM

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

docker怎麼啟動mysql docker怎麼啟動mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

解決數據庫連接問題:使用minii/db庫的實際案例 解決數據庫連接問題:使用minii/db庫的實際案例 Apr 18, 2025 am 07:09 AM

在開發一個小型應用時,我遇到了一個棘手的問題:需要快速集成一個輕量級的數據庫操作庫。嘗試了多個庫後,我發現它們要么功能過多,要么兼容性不佳。最終,我找到了minii/db,這是一個基於Yii2的簡化版本,完美地解決了我的問題。

centos7如何安裝mysql centos7如何安裝mysql Apr 14, 2025 pm 08:30 PM

優雅安裝 MySQL 的關鍵在於添加 MySQL 官方倉庫。具體步驟如下:下載 MySQL 官方 GPG 密鑰,防止釣魚攻擊。添加 MySQL 倉庫文件:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm更新 yum 倉庫緩存:yum update安裝 MySQL:yum install mysql-server啟動 MySQL 服務:systemctl start mysqld設置開機自啟動

centos安裝mysql centos安裝mysql Apr 14, 2025 pm 08:09 PM

在 CentOS 上安裝 MySQL 涉及以下步驟:添加合適的 MySQL yum 源。執行 yum install mysql-server 命令以安裝 MySQL 服務器。使用 mysql_secure_installation 命令進行安全設置,例如設置 root 用戶密碼。根據需要自定義 MySQL 配置文件。調整 MySQL 參數和優化數據庫以提升性能。

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

MySQL和PhpMyAdmin:核心功能和功能 MySQL和PhpMyAdmin:核心功能和功能 Apr 22, 2025 am 12:12 AM

MySQL和phpMyAdmin是強大的數據庫管理工具。 1)MySQL用於創建數據庫和表、執行DML和SQL查詢。 2)phpMyAdmin提供直觀界面進行數據庫管理、表結構管理、數據操作和用戶權限管理。

See all articles