MySql 學習筆記一:SQL語句優化
一、資料庫三正規化
第一正規化:1NF是對屬性的原子性約束,要求屬性(列)具有原子性,不可再分解;(只要是關係型資料庫都滿足1NF)
第二正規化:2NF是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性;
第三正規化:3NF是對欄位冗餘性的約束,它要求欄位沒有冗餘。 沒有冗餘的資料庫設計可以做到。
但是,沒有冗餘的資料庫未必是最好的資料庫,有時為了提高執行效率,就必須降低正規化標準,適當保留冗餘資料。具體做法是: 在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。降低正規化就是增加欄位,允許冗餘。
二、SQL語句優化
1、SQL優化的一般步驟
- 通過show status命令瞭解各種SQL的執行頻率。
- 定位執行效率較低的SQL語句-(重點select)
- 通過explain分析低效率的SQL語句的執行情況
- 確定問題並採取相應的優化措施
2、SQL語句優化-show引數
MySQL客戶端連線成功後,通過使用show [session|global] status 命令可以提供伺服器狀態資訊。其中的session來表示當前的連線的統計結果,global來表示自資料庫上次啟動至今的統計結果。預設是session級別的。下面的例子:
show status like 'Com_%';
其中Com_XXX表示XXX語句所執行的次數。
重點注意:Com_select,Com_insert,Com_update,Com_delete通過這幾個引數,可以容易地瞭解到當前資料庫的應用是以插入更新為主還是以查詢操作為主,以及各類的SQL大致的執行比例是多少。
比如:
SHOW status LIKE 'Com_select';
還有幾個常用的引數便於使用者瞭解資料庫的基本情況。
Connections:試圖連線MySQL伺服器的次數
Uptime:伺服器工作的時間(單位秒)
Slow_queries:慢查詢的次數 (預設是慢查詢時間10s)
show status like 'connections';
-- 顯示慢查詢次數
show status like 'slow_queries';
-- 修改慢查詢界定時間為2秒
set long_query_time=2;
3、SQL語句優化-定位慢查詢
(未測試)
在預設情況下mysql不記錄慢查詢日誌,需要在啟動的時候指定:
bin\mysqld.exe - -safe-mode - -slow-query-log [mysql5.5 可以在my.ini指定]
bin\mysqld.exe –log-slow-queries=d:/abc.log [低版本mysql5.0可以在my.ini指定]
先關閉mysql,再啟動, 如果啟用了慢查詢日誌,預設把這個檔案放在
my.ini 檔案中記錄的位置
Path to the database root
datadir=”C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/”
先定位到mysql安裝目錄中bin資料夾所在的目錄(未盡到bin資料夾內部)
再執行命令
通過慢查詢日誌定位執行效率較低的SQL語句。慢查詢日誌記錄了所有執行時間超過long_query_time所設定的SQL語句。
本文部分內容整理自itcast講義,在此表示感謝。
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- mysql sql語句學習(一)MySql
- Java學習筆記--sql語句Java筆記SQL
- MySql 學習筆記三:常用SQL優化MySql筆記優化
- MYSQL SQL語句優化MySql優化
- MySQL之SQL語句優化MySql優化
- mysql優化學習筆記MySql優化筆記
- 學習筆記----一句SQL語句寫個乘法表筆記SQL
- MySQL事務控制語句(學習筆記)MySql筆記
- Mysql 優化(學習筆記二十)MySql優化筆記
- 【SQL Server學習筆記】Delete 語句、Output 子句、Merge語句SQLServer筆記delete
- 淺談mysql配置優化和sql語句優化MySql優化
- MySQL優化學習筆記之索引MySql優化筆記索引
- MySQL優化學習筆記之explainMySql優化筆記AI
- SQLite語句學習筆記SQLite筆記
- SQL語句優化SQL優化
- 一個SQL語句的優化SQL優化
- 一條sql語句的優化SQL優化
- SQL語句筆記SQL筆記
- MySQL學習筆記之SQL語句建立、修改和刪除資料庫MySql筆記資料庫
- SQL Server優化之SQL語句優化SQLServer優化
- Python學習筆記 - if語句Python筆記
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- sql語句效能優化SQL優化
- SQL語句的優化SQL優化
- 求助:SQL語句優化SQL優化
- SQL 語句學習SQL
- sql語句學習SQL
- sql 語句練習 In MySQLMySql
- MySQL 52個SQL效能優化策略SQL語句彙總MySql優化
- MySQL——優化ORDER BY語句MySql優化
- mysql limit語句優化MySqlMIT優化
- mysql 優化常用語句MySql優化
- python學習筆記(五)——語句Python筆記
- 一條SQL語句的優化過程SQL優化
- 一次sql語句優化的反思SQL優化
- SQL語句優化(轉載)SQL優化
- 常用SQL語句優化技巧SQL優化
- Oracle之sql語句優化OracleSQL優化