表:符合三正規化 (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,...