MySQL與PHP的基礎與應用專題之索引
概述
從今天開始, 小白我將帶領大家一起來補充一下 數據庫的知識.
索引
索引 (Index) 是一種特殊的數據結構, 類似于圖書的目錄. 索引能夠極大的提升數據庫的查詢效率. 如果沒有索引, 在查詢數據時必須掃描表中的說有記錄才能找出符合條件的記錄, 這種全表掃描的查詢效率非常低.
索引的種類 | 描述 |
---|---|
普通索引 | 最基本的索引, 沒有任何限制, 僅加速查詢 |
唯一索引 | 索引列的值必須唯一, 但允許有空值 |
主鍵索引 | 一種特殊的唯一索引, 不允許有空值 |
復合索引 | 兩個或多個列上的索引被稱作符合索引 |
全文索引 | 對文本內容進行分詞索引 |
格式:
CREATE INDEX 索引名 ON 表名(列名)
查詢分析器 EXPLAIN
EXPLAIN 命令可以查看 SQL 語句的執(zhí)行計劃. 當 EXPLAIN 與 SQL 語句一起使用時, MySQL 將顯示來自優(yōu)化器的有關語句執(zhí)行計劃的信息. MySQL 解釋了它將如何處理語句, 包括有關如何連接表以及以何種順序連接表的信息.
查詢分析器的用途:
- 分析出表的讀取順序
- 數據讀取操作的操作類型
- 哪些索引可以使用
- 哪些索引被實際使用
- 表之間的引用
- 每張表有多少行被優(yōu)化器查詢
結果解析:
參數 | 描述 |
---|---|
id | 執(zhí)行 SELECT 或操作表的順序 |
select_type | 查詢的類型, 如 SIMPLE, PRIMARY, SUBQUERY, DERIVED, UNION 等 |
table | 當前行使用的表名 |
partitions | 匹配的分區(qū) |
type | 連接類型 |
possibile_keys | 可能使用的索引 |
key | 實際使用的索引, NULL 表示未使用索引 |
key_len | 查詢中使用的索引長度 |
ref | 列與索引的比較 |
rows | 掃描的行數 |
filtered | 選取的行數占掃描的行數的百分比 |
extra | 其他信息 |
格式:
EXPLAIN SQL 語句
例子:
MySQL 日志
日志 (Log) 用于記錄數據庫的運行情況, 以及用戶對數據庫執(zhí)行的各類操作. 當數據庫發(fā)生故障時, 可以根據日志分析和解決問題, 從而對數據進行恢復.
日志 | 描述 |
---|---|
重做日志 (Redo Log) | 重做日志是一種物理格式的日志, 記錄的是物理數據頁面修改的信息 |
回滾日志 (Undo Log) | 回滾日志是一種邏輯格式的日志, 在執(zhí)行 Undo 的時候. 僅僅是將數據從邏輯上恢復至事務之前的狀態(tài) |
二進制日志 (Bin Log) | 二進制日志是一種邏輯格式的日志, 以二進制文件的形式記錄了數據庫中的操作, 但不記錄查詢語句 |
錯誤日志 (Error Log) | 錯誤日志記錄著 Mysqld 啟動和停止, 以及服務器在運行過程中發(fā)生的錯誤的關信息 |
慢查詢日志 (Slow Query Log) | 慢查詢日志記錄執(zhí)行時間過長和沒有使用索引的查詢語句 |
一般查詢日志 (General Log) | 記錄了服務器收到的每一個查詢或是命令, 無論這些查詢是命令是否正確甚至是否包含語法錯誤 |
中繼日志 (Relay Log) | 中級日志類似二進制, 可用于復制架構中, 使從服務器和主服務器的數據保持一致 |
慢查詢日志
慢查詢日志用于記錄 MySQL 數據庫中響應時間超過指定閾值的語句. 慢查詢日志通常也被稱為慢體質, 因為慢查詢不僅僅針對 SELECT 語句, 像 INSERT, UPDATE, DELETE 等語句. 只要響應時間超過所設定閾值都會記錄在慢查詢日志中.
參數 | 描述 |
---|---|
slow_query_log | 是否開啟慢查詢日志, 1 表示開啟, 0 表示關閉 |
slow_query_log_file | 慢查詢日志存儲路徑, 可選 |
long_query_time | 閾值, 當 SQL 語句的響應時間超過閾值就會被記錄到日志中 |
log_queries_ not_using_indexes | 未使用索引的查詢也被記錄到慢查詢中, 可選 |
log_output | 日志存儲方式, 默認為 FILE log_output=‘FILE’ 表示將日志存入文件 log_output=‘TBALE’ 表示將日志存入數據庫 log_output=‘FILE, TABLE’ 表示同時將日志存入文件和數據庫 |
開啟慢查詢:
set slow_query_log='ON';
set long_query_time=1;
到此這篇關于MySQL與PHP的基礎與應用專題之索引的文章就介紹到這了,更多相關MySQL 索引內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL從MyISAM轉換成InnoDB錯誤與常用解決辦法
由于一些程序的要求,需要MyISAM數據引擎或InnoDB,下面是具體的解決方法,經測試偶爾會出現(xiàn)一些問題。2011-05-05