Mysql數據庫常見試題


  • 引用自http://blog.csdn.net/laoniyouxi123/article/details/51161157
  • sql語句應該考慮哪些安全性? 答: (1)防止sql注入,對特殊字符進行轉義,過濾或者使用預編譯的sql語句綁定變量。 (2)最小權限原則,特別是不要用root賬戶,為不同的類型的動作或者組建使用不同的賬戶。 (3)當sql運行出錯時,不要把數據庫返回的錯誤信息全部顯示給用戶,以防止泄漏服務器和數據庫相關信息。

  • 簡單描述MySQL中,索引,主鍵,唯一索引,聯合索引的區別,對數據庫的性能有什么影響。 答: (1)索引是一種特殊的文件(InnoDB數據表上的索引是表空間的一個組成部分),它們包含着對數據表里所有記錄的引用指針。 (2)普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對數據的訪問速度。 (3)普通索引允許被索引的數據列包含重復的值,如果能確定某個數據列只包含彼此各不相同的值,在為這個數據索引創建索引的時候就應該用關鍵字UNIQE把它定義為一個唯一所以,唯一索引可以保證數據記錄的唯一性。 (4)主鍵,一種特殊的唯一索引,在一張表中只能定義一個主鍵索引,逐漸用於唯一標識一條記錄,是用關鍵字PRIMARY KEY來創建。 (5)索引可以覆蓋多個數據列,如像INDEX索引,這就是聯合索引。 (6)索引可以極大的提高數據的查詢速度,但是會降低插入刪除更新表的速度,因為在執行這些寫操作時,還要操作索引文件。

  • 一張表,里面有ID自增主鍵,當insert了17條記錄之后,刪除了第15,16,17條記錄,再把Mysql重啟,再insert一條記錄,這條記錄的ID是18還是15 ? 答: (1)如果表的類型是MyISAM,那么是18。  因為MyISAM表會把自增主鍵的最大ID記錄到數據文件里,重啟MySQL自增主鍵的最大ID也不會丟失。  (2)如果表的類型是InnoDB,那么是15。  InnoDB表只是把自增主鍵的最大ID記錄到內存中,所以重啟數據庫或者是對表進行OPTIMIZE操作,都會導致最大ID丟失。

    1. 請簡述項目中優化sql語句執行效率的方法,從哪些方面。sql語句性能如何分析? 答: (1)盡量選擇較小的列 (2)將where中用的比較頻繁的字段建立索引 (3)select子句中避免使用‘*’ (4)避免在索引列上使用計算,not,in和<>等操作 (5)當只需要一行數據的時候使用limit 1 (6)保證表單數據不超過200w,適時分割表 (7)針對查詢較慢的語句,可以使用explain來分析該語句具體的執行情況


免責聲明!

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



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