select name,email from user where email Regexp "@163[.,]com$";
sql語句中使用Regexp對性能影響較大。
rand();隨機數函數
1、隨機排序 mysql> select * from hello order by rand();
2、隨機列抽取3條 mysql> select * from hello order by rand() limit 3;
表B1中的一個普通的列是另一個表B2的主鍵,如果B2表中的一條記錄刪除那表B1中關聯該主鍵值的列也應該刪除。
不建議使用外鍵,在使用的時候要注意。
mysql中的Innodb存儲引擎支持外鍵。
? create 、? opti% 、? contents 、? functions
一、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 方式任選其一)