1、索引語法
2、慢查詢日志
慢查詢日志記錄了所有執行時間超過指定參數( long_query_time ,單位:秒,默認 10 秒)的所有
SQL 語句的日志。
MySQL 的慢查詢日志默認沒有開啟,我們可以查看一下系統變量 slow_query_log 。
開啟慢查詢日志,需要在 MySQL 的配置文件( /etc/my.cnf )中配置如下信息:

檢查慢查詢日志 :
最終我們發現,在慢查詢日志中,只會記錄執行時間超多我們預設時間( 2s )的 SQL ,執行較快的 SQL是不會記錄的。

3、profile 和explain
profile 能夠在做SQL 優化時幫助我們了解時間都耗費到哪里去了
通過 have_profiling參數,能夠看到當前 MySQL 是否支持 profile 操作:
1、SELECT @@have_profiling ;?
2、SET profiling = 1;? 開啟 profiling
3、執行sql語句
4、

EXPLAIN 或者 DESC 命令獲取 MySQL 如何執行 SELECT 語句的信息,包括在 SELECT 語句執行
過程中表如何連接和連接的順序。



4、索引設計原則
1). 針對于數據量較大,且查詢比較頻繁的表建立索引。
2). 針對于常作為查詢條件( where )、排序( order by )、分組( group by )操作的字段建立索
引。
3). 盡量選擇區分度高的列作為索引,盡量建立唯一索引,區分度越高,使用索引的效率越高。
4). 如果是字符串類型的字段,字段的長度較長,可以針對于字段的特點,建立前綴索引。
5). 盡量使用聯合索引,減少單列索引,查詢時,聯合索引很多時候可以覆蓋索引,節省存儲空間,避免回表,提高查詢效率。
6). 要控制索引的數量,索引并不是多多益善,索引越多,維護索引結構的代價也就越大,會影響增刪改的效率。
7). 如果索引列不能存儲 NULL 值,請在創建表時使用 NOT NULL 約束它。當優化器知道每列是否包含 NULL 值時,它可以更好地確定哪個索引最有效地用于查詢。