程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql學習之 sql語句的技巧及優化,mysqlsql語句技巧

mysql學習之 sql語句的技巧及優化,mysqlsql語句技巧

編輯:MySQL綜合教程

mysql學習之 sql語句的技巧及優化,mysqlsql語句技巧


一、sql中使用正則表達式

select name,email from user where email Regexp "@163[.,]com$";

sql語句中使用Regexp對性能影響較大。

二、使用Rand()函數獲取隨機數據

rand();隨機數函數

1、隨機排序 mysql> select * from hello order by rand();

2、隨機列抽取3條 mysql> select * from hello order by rand() limit 3;

 三、使用group by 分組語句後面跟with rollup 關鍵字,可以統計出更多的信息。(with rollup後不能再使用order by)

 四、外鍵

表B1中的一個普通的列是另一個表B2的主鍵,如果B2表中的一條記錄刪除那表B1中關聯該主鍵值的列也應該刪除。

不建議使用外鍵,在使用的時候要注意。

mysql中的Innodb存儲引擎支持外鍵。

五、使用 ?  % 查看幫助手冊

? create 、? opti% 、? contents 、? functions

 

mysql優化

一、sql語句如何優化

1、查詢數據庫各種sql類型語句的執行情況。

show [session | global ] status :了解數據庫中各種sql的執行頻率

session:表示查詢當前建立連接以來各種SQL的執行頻率

global:表示自數據庫啟動以來各種SQL的執行頻率

一般我們主要查詢這些信息:

com_xxx :表示每個xxx語句的執行次數,該方式可以查看mysql任何存儲引擎的sql語句執行次數記錄。

show GLOBAL status like "com_select%";  // 查看sql 中select語句的執行次數
show GLOBAL status like "com_insert%";  // 查看sql 中insert語句的執行次數
show GLOBAL status like "com_update%"; // 查看sql 中update語句的執行次數
show GLOBAL status like "com_delete%";// 查看sql 中delete語句的執行次數

對於存儲引擎為InnoDB:該方式查詢的記錄數是計算你每次SQL操作數據的行數。(例如:delete from hello where id <=10 該語句刪除了10條記錄,那麼Innodb_rows_deleted=10)

mysql> show status like 'connections';   查看mysql的連接量(無論一次連接是否成功)

mysql> show status like 'uptime'; 查看mysql工作時間 單位秒

 

2、關於mysql慢查詢

a、查看mysql慢查詢狀態

slow_query_log    :是否開啟慢查詢日志,1表示開啟,0表示關閉。

log_slow_queries  :舊版(5.6以下版本)MySQL數據庫慢查詢日志存儲路徑。可以不設置該參數,系統則會默認給一個缺省的文件host_name-slow.log

slow_query_log_file:新版(5.6及以上版本)MySQL數據庫慢查詢日志存儲路徑。可以不設置該參數,系統則會默認給一個缺省的文件host_name-slow.log

b、慢查詢時間(秒):會將select 語句執行時間超過10秒的sql記錄到慢查詢日志中

3、定位分析sql語句(desc 與 explain 方式任選其一)

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved