mysql優化面試總結

2021-10-05 03:57:52 字數 1864 閱讀 4099

總結

1.資料庫的設計

盡量把資料庫設計的更小的佔磁碟空間.

1).盡可能使用更小的整數型別.(mediumint就比int更合適).

2).盡可能的定義欄位為not null且設定預設值,除非這個字段需要null.

3).只建立確實需要的索引。索引有利於檢索記錄,但是不利於快速儲存記錄。如果總是要在表的組合欄位上做搜尋,那麼就在這些欄位上建立索引。索引的第一部分必須是最常使用的字段.如果總是需要用到很多字段,首先就應該多複製這些字段,使索引更好的壓縮。

4).資料庫三大正規化。

5).在某些情況下,把乙個頻繁掃瞄的表分成兩個速度會快好多。在對動態格式表掃瞄以取得相關記錄時,它可能使用更小的靜態格式表的情況下更是如此。 

6)盡可能的使用 varchar 代替 char ,因為首先變長字段儲存空間小,可以節省儲存空間,    

其次對於查詢來說,在乙個相對較小的字段內搜尋效率顯然要高些

2.系統的用途

1).盡量使用長連線.

2).explain 複雜的sql語句,檢視sql執行計畫。

3).如果兩個關聯表要做連線話,連線的字段必須型別和長度都一致.

4).limit語句盡量要跟order by或者 distinct.這樣可以避免做一次full table scan.

5).如果想要清空表的所有紀錄,建議用truncate table tablename而不是delete from tablename.

6).能使用store procedure 或者 user function的時候.

7).在一條insert語句中採用多重紀錄插入格式.而且使用load data infile來匯入大量資料,這比單純的indert快好多.

8).經常optimize table 來整理碎片.

9).還有就是date 型別的資料如果頻繁要做比較的話盡量儲存在unsigned int 型別比較快。

)sql語句中in包含的值不應過多,對於連續的值,例如in(1,2,3..),可使用between 代替in

)select 後接具體的列名,別使用*。

)當只需要一條資料的時候,使用limit 1。(這是為了使explain中type列達到const型別)

)如果排序字段沒有用到索引,就盡量少排序

)盡量使用union all 或者 union代替or使用

)like 『%*%』查詢,會導致索引失效,可使用全文索引替代

例如:alter table `table_name` add fulltext index `idx_user_name` (`user_name`);

使用全文索引的sql語句是:

select id,fnum,fdst from table_name 

where match(user_name) against('zhangsan' in boolean mode);

強烈注意:mysql自帶的全文索引只能用於資料庫引擎為myisam的資料表(innodb5.6.4以後也行),如果是其他資料引擎,則全文索引不會生效。此外,mysql自帶的全文索引只能對英文進行全文檢索,目前無法對中文進行全文檢索。如果需要對包含中文在內的文字資料進行全文檢索,我們需要採用sphinx(斯芬克斯)/coreseek技術來處理中文。

注:目前,使用mysql自帶的全文索引時,如果查詢字串的長度過短將無法得到期望的搜尋結果。mysql全文索引所能找到的詞預設最小長度為4個字元。另外,如果查詢的字串包含停止詞,那麼該停止詞將會被忽略。

注:如果可能,請盡量先建立表並插入所有資料後再建立全文索引,而不要在建立表時就直接建立全文索引,因為前者比後者的全文索引效率要高。

對一些特定的資料,可使用redis做快取,例如session、快取、佇列資料、臨時中轉資料、等等,先從redis提取資料,如果沒有再訪問mysql提取。

Mysql優化實戰總結與面試

使用機械硬碟或者加裝固態硬碟 可以將mysql放在window環境中也可以放到linux環境下後者更快 1.儘量減少查詢所有以及子查詢等一些操作,關聯查詢要比只查詢要快 2.避免進行全表掃瞄,比如使用模糊查詢第乙個字用萬用字元,或者or,以及is null andis not null 3.不要對索...

mysql面試總結 MySQL面試總結

最近在面試,總結一下問的比較多的問題,持續補充哈!基礎varchar與char區別 首先你要知道的是varchar 20 這裡的20代表的是字元,而不是位元組,其次在mysql中,所有使用utf8字符集,無論是中文還是英文,都是按照3個位元組儲存 varchar與char都可以儲存字元,它們的區別是...

mysql優化總結

如果大家有異議,可以在後面補充。我會隨時更新的。現在大概列出如下 望各位補充 1.資料庫的設計 盡量把資料庫設計的更小的佔磁碟空間.1 盡可能使用更小的整數型別.mediumint就比int更合適 2 盡可能的定義欄位為not null,除非這個字段需要null.這個規則只適合欄位為key的情形 3...