where語句的優化html
1.儘可能避免在 where 子句中對字段進行表達式操做
select id from uinfo_jifen where jifen/60 > 10000;
優化後:
Select id from uinfo_jifen where jifen>600000;mysql
2.應儘可能避免在where子句中對字段進行函數操做,這將致使mysql放棄使用索引sql
select uid from imid where datediff(create_time,'2011-11-22')=0
優化後
select uid from imid where create_time> ='2011-11-21‘ and create_time<‘2011-11-23’;數據庫
優化Group By語句服務器
優化Order by語句函數
優化insert語句優化
垂直分表:ui
把主碼和一些列放到一個表,而後把主碼和另外的列放到另外一個表中。
若是一個表中某些列經常使用,而另一些列不經常使用,則能夠採用垂直分割,另外垂直分割可使得數據行變小,一個數據頁就能存放更多的數據,在查詢時就會減小I/O次數。其缺點是須要管理冗餘列,查詢全部數據須要join操做。spa
水平分割:htm
根據一列或多列數據的值把數據行放到兩個獨立的表中。
水平分割一般在下面的狀況下使用。
• 表很大,分割後能夠下降在查詢時須要讀的數據和索引的頁數,同時也下降了索引的層數,提升查詢速度。
• 表中的數據原本就有獨立性,例如表中分別記錄各個地區的數據或不一樣時期的數據,特別是有些數據經常使用,而另一些數據不經常使用。
• 須要把數據存放到多個介質上。
水平分割會給應用增長複雜度,它一般在查詢時須要多個表名,查詢全部數據須要union操做。在許多數據庫應用中,這種複雜性會超過它帶來的優勢,由於只 要索引關鍵字不大,則在索引用於查詢時,表中增長兩到三倍數據量,查詢時也就增長讀一個索引層的磁盤次數。
讀寫分離:
一臺數據庫服務器,是對外提供增刪改業務的生產服務器;另外一臺數據庫服務器,主要進行讀的操做。
主要經過RAID(磁盤陣列)把多塊獨立的硬盤(物理硬盤)按不一樣的方式組合起來造成一個硬盤組(邏輯硬盤)。