玩轉mysql 之mysql優化

mysql 優化之路 1:使用索引 索引介紹:首先沒有因此的表,就是一個無序的表結合,查找一條數據,將會掃描整個數據表,這種工做效率將會很慢 因爲索引是通過值分類 當咱們掃描 數據編號16的時候 假設找到了三條匹配的數據行,當掃描到17的時候 發現值大於咱們指望的值 此時因此中止掃描 因而可知索引提升效率的緣由 1:得知數據匹配換行在什麼位置結束 2:二進制搜索算法的使用(原理 不從索引開始位置通過掃描,直接找到數據) myisam引擎索引原理數據表的數據在數據文件裏 索引值在索引文件裏 一個數據表能夠有多個索引 索引都是按照數值分類存放的 innodb數據庫:使用的是表空間,經過這個表空間管理着數據表的數據和索引的存儲 mysql中使用索引的幾種方式 1:在where語句中使用把與where語句所給出的條件相匹配的數據行儘快找出來,關聯操做中與其它數據表相匹配的數據行儘快找出來 2:對於使用 max(),min的函數 若是數據列帶索引,那麼他的值可以儘快的被匹配出來,而不用經過每行的檢查找出來 缺點:索引會很快佔用數據文件或者數據表空間 索引的選用 1:儘可能爲用來搜索,分組,分類的數據列編制索引,不要爲做爲輸出顯示列的數據列使用索引換句話說(where,orderBy,groupBy,關聯子句中使用),不要selectfrom//中的 顯示的中的數據列 最好不要使用索引 2:綜合考慮數據列的緯度勢:數據列的緯度等於他所容納的非重覆值的個數 例 1,2,34,5,2,的緯度是4 數據列的緯度越高,索引的使用效果越好 3:短小的值進行索引 4:爲字符串值的前綴編索引//將數據列的前N個字符編制索引 5:充分利用最左邊的前綴//意指複合索引 (這種索引搜索組合) STATE,CITY,ZIP STATE ZIP STATE 6:不要創建過多的索引,這樣會使磁盤空間急劇上升 innbdb老是使用B樹索引,myisam也是使用b樹索引,遇到空間數據類型會使用R樹索引mysql

7:利用慢查詢日誌,找出性能低劣的查詢 能夠利用mysqldump工具去查看
8:使用explain語句查看sql語句的執行性能---explain select * from student where isSex=false 9:不要在like的開始位置使用通配符 例select * from student where name like '%張三%' 雖然這個語句是正確的 可是這樣不會使用前綴索引查詢,而是去掃描了整個數據表, 正確寫法 select * from student where name like '%張三 此時上面你的語法等於 where name>='張三' and name<'張三ss'//此時使用了索引優化程序 10:利用優化器的長處,mysql支持鏈接查詢和子查詢 ,儘可能使用鏈接查詢 11:避免過多使用mysql的自動轉型功能 例 select age from student where age=4 select age from student where age='4' 雖然會自動轉型 可是會影響速度 12:按期進行碎片整理 13:把數據壓縮到text和blob數據表裏 14:儘可能避免對很大的數據進行檢索,如text和blob數據 15:批量加載,批量刷新,減小鍵的緩存刷新次數,加載完成以後 才進行刷新,單行加載,每次加載完都要刷新(由於對索引的修改 實在鍵緩存區進行的,而後纔會適當的從機器寫到硬盤)算法

相關文章
相關標籤/搜索