MySQL優化入門

2021-07-02 02:31:52 字數 1334 閱讀 2751

表:符合三正規化 (nf)

一正規化 : 表的列具有原子性 不可再分割 列的資訊不能分割 關係型資料庫自動滿足一正規化

二正規化 : 表中的記錄是唯一的(設定主鍵,不含業務邏輯,資料穩定,不用修改)

三正規化 : 表中不要有冗餘資料(表的資訊如果能被推導出來 就不應該單獨設計乙個字段)

設計者有時候為了方便 多設計字段 這樣會違反三正規化

有時候在表1對n情況下 為了提高效率 減少對資料庫的查詢次數 可能會在1的表上設計一些多餘的字段 適當冗餘

在專案中定位慢查詢語句   : show status like 'slow_queries' //查詢慢查詢數量

show variables like 'long_query_time' //預設慢查詢時間為10秒

set long_query_time =0.5  //關閉query後失效 

wimdows下設定 my.ini   

log-slow-queries = c:\program files (x86)\mysql\mysql server 5.5\mysqlslowquery.log  //log路徑

long_query_time=0.3

索引以及語句優化

全文索引

1  mysql中 全文索引fulltext 只對myisam有效

2 mysql中自己提供的全文索引只對英文生效sphinx(coreseek)技術處理中文

3 使用方法 select * from articles where match(title,bode) against('eds')

4 全文索引乙個 叫 停止詞,因為在乙個文字中,建立索引是乙個無窮大數,因此,對一些常用詞和字元 就不會建立,這些詞 稱為停止詞

語句中使用索引條件

1.查詢條件中需要使用索引

2.對於建立的多列復合索引查詢條件使用到了最左邊的列 索引一般就會被使用

3.對於like查詢 %aaa,_aaa不會使用索引,aaa%會使用到索引(不確定的不要放前面)

以下不會使用索引

條件中有or,where後面所有的字段必須都要建索引----盡量避免用or

多列索引不是第一列用到索引

like查詢以%開頭

列型別是字串 則一定要在條件中將資料用"" 

全表掃瞄比使用索引快

檢視索引的使用情況 show status like 'handler_read%' 

handler_read_key越高越好

handler_read_rnd_next越低越好

使用group by 分組查詢時 預設分組後會預設排序 可能會降低查詢速度  +上 order by null 可以防止filesort

ORACLE SQL優化 入門

聽了王海波老師的課後的筆記 1.sql優化需要什麼?select from t1 where t1.x 2.為什麼建索引可以優化 建立索引以後,oracle就有兩個選擇,當選擇了更優秀的路徑去執行,這個過程就叫做優化。3.什麼是訪問路徑 訪問路徑是用於從行源檢索行的一種技術 1 table acce...

dp 優化入門

蒟蒻學了這個忘了那個,學了那個忘了這個,於是開篇部落格總結一下 qwq 不過等我 github 部落格弄好了就不會在這裡更新了 題目描述 n 個玩具,第 i 個玩具長度為 c i 要求將玩具分成若干段,定義一段 l,r 的權值 l 為 r l sum rc k 一段長為 x 的段的費用為 x l 2...

決策單調性優化入門

對於乙個二元函式 w l,r 如果有下面的命題成立,則稱 w 滿足四邊形不等式 forall a leq b c leq d,w a,c w b,d leq w a,d w b,c 如果二元函式 w a,b 滿足 w a 1,b 1 w a,b leq w a,b 1 w a 1,b 那麼 w a,...