mysql優化方面的面試題


1.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.

 

2.實踐中如何優化MySQL

最好是按照以下順序優化:

1.SQL語句及索引的優化

2. 數據庫表結構的優化

3.系統配置的優化

4.硬件的優化

3.優化數據庫的方法

  1.  選取最適用的字段屬性,盡可能減少定義字段寬度,盡量把字段設置NOTNULL,例如’省份’、’性別’最好適用ENUM
  2.  使用連接(JOIN)來代替子查詢
  3.  適用聯合(UNION)來代替手動創建的臨時表
  4.  事務處理
  5.  鎖定表、優化事務處理
  6.  適用外鍵,優化鎖定表
  7.  建立索引
  8.  優化查詢語句

4.如何通俗地理解三個范式?  

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

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

第三范式:3NF是對字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余。。

范式化設計優缺點:

優點:

可以盡量得減少數據冗余,使得更新快,體積小

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

反范式化:

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

缺點:數據冗余以及數據異常,數據得修改需要更多的成本

5.說說對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 子句中對字段進行表達式操作,這將導致引擎放棄使用索引而進行全表掃描


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM