目前數據庫是大多數系統進行數據存儲的基礎組件,數據庫的效率對系統的穩定和效率有著至關重要的影響;為了有更好的用戶體驗,數據庫的優化顯得異常重要。那么我們要從那些方面對我們的數據庫進行優化呢?讓我們在《布爾教育燕十八mysql優化視頻教程》這門課程中共同探討一起學習吧!
視頻播放地址:http://www.php.cn/course/200.html
本視頻難點在于優化查詢功能,也就是對索引的使用:
1、選擇索引的數據類型
mysql支持很多數據類型,選擇合適的數據類型存儲數據對性能有很大的影響。通常來說,可以遵循以下一些指導原則:
(1)越小的數據類型通常更好:越小的數據類型通常在磁盤、內存和CPU緩存中都需要更少的空間,處理起來更快。
(2)簡單的數據類型更好:整型數據比起字符,處理開銷更小,因為字符串的比較更復雜。在MySQL中,應該用內置的日期和時間數據類型,而不是用字符串來存儲時間;以及用整型數據類型存儲IP地址。
(3)盡量避免NULL:應該指定列為NOT NULL,除非你想存儲NULL。在MySQL中,含有空值的列很難進行查詢優化,因為它們使得索引、索引的統計信息以及比較運算更加復雜。你應該用0、一個特殊的值或者一個空串代替空值。
1.1、選擇標識符
選擇合適的標識符是非常重要的。選擇時不僅應該考慮存儲類型,而且應該考慮MySQL是怎樣進行運算和比較的。一旦選定數據類型,應該保證所有相關的表都使用相同的數據類型。
(1)?? ?整型:通常是作為標識符的最好選擇,因為可以更快的處理,而且可以設置為AUTO_INCREMENT。
(2)?? ?字符串:盡量避免使用字符串作為標識符,它們消耗更好的空間,處理起來也較慢。而且,通常來說,字符串都是隨機的,所以它們在索引中的位置也是隨機的,這會導致頁面分裂、隨機訪問磁盤,聚簇索引分裂(對于使用聚簇索引的存儲引擎)。
2、索引入門
對于任何DBMS,索引都是進行優化的最主要的因素。對于少量的數據,沒有合適的索引影響不是很大,但是,當隨著數據量的增加,性能會急劇下降。
如果對多列進行索引(組合索引),列的順序非常重要,MySQL僅能對索引最左邊的前綴進行有效的查找。例如:
假設存在組合索引it1c1c2(c1,c2),查詢語句select * from t1 where c1=1 and c2=2能夠使用該索引。查詢語句select * from t1 where c1=1也能夠使用該索引。但是,查詢語句select * from t1 where c2=2不能夠使用該索引,因為沒有組合索引的引導列,即,要想使用c2列進行查找,必需出現c1等于某值。
本課程講師是傳智播客著名講師劉道成,可能說劉道成你們不知道,但是說到燕十八你們肯定了解,劉道成就是燕十八。他的講課風格風趣幽默,課堂氛圍很好,可以很好的調動學生們上課時的積極性,能讓大家有個輕松的學習氛圍。另外,他講課重點突出,讓你知道學習的重點在哪里,回去著重學習。學習的難點也會講的非常詳細,盡量做到每個人都可以聽得明白。