1 正則 regexp 比like更消耗資源
select name, email from t where email regexp "@163[.,]com$"
select name, email from t where email like "%@163.com" ro email like "%@163,com"
2 rand() 提取隨機行
和order by一起使用,能把資料隨機排序
select * from t order by rand() limit 5, 隨機抽取5行資料
3 利用group by 的 with rollup
with rollup 相比group by能聚集更多資訊
select * , count(pname) from demo group by cname,pname with rollup
4 外來鍵
innodb支援外來鍵 myisam不支援外來鍵, 不鼓勵使用外來鍵
foreign key(id) references outtable(id) on delete cascade on update cascade;
優化1 show 【session|global】status 各種sql執行頻率
session 預設 當前連線 global 資料庫啟動以來
show status like "com_select";
show status like "connections" 連線mysql數量
uptime 工作秒數 slow_queries 慢查詢次數
2 定位效率較低的sql語句
慢查詢日誌 show variables like "%slow";
3 對sql語句經行解析 explain desc
expline/desc select * from t;
看影響行數
索引的使用
1 like查詢 %不再第乙個字元,用到索引
2 is (not ) null 使用索引
3 or and 前後都要加索引 才會用到索引
4 盡量避免使用巢狀查尋 select from where id in(select from ) 外面不會用到索引 ,連線使用索引,使用連線 select * from t1 , t2 where
檢視索引的使用情況
show status like "handler_read%"
handler_read_rnd_next 值高,需要建立索引
表優化檢查表: check
check table 表名 檢測乙個或多個表是否有錯
定期優化: optimize
optimize table 表名 如過已經刪除表的一大部分,使用這個命令將表空間碎片合併
insert 語句優化
insert 插入多項值,避免每插入一次連線一次資料庫
group by
如果需要,關掉排序 group by id order by null;
in 巢狀查詢
不要用 select from where id in(select from ) 外面不會用到索引 ,連線使用索引,使用連線 select * from t1 , t2 where
多使用中間表
檢視:來表示熱門貼
多用列舉
伺服器優
1 字符集
伺服器,資料庫 客戶端 連線字符集 --- utf-8
配置檔案 default-character-set=utf-8 客戶端 連線
character-set-server=utf-8 伺服器 資料庫
collation-server=utf-8_general_ci 校驗字符集
2 改密嗎
1 關程序pkill mysql
2 跳過授權表 mysql --skip-grand-tables --user=mysql&
3 登入mysql bu用密碼
4 修該密碼 update user set password=password("wei") where user = "root" and host="localhost"
5 再次登入
常見sql技巧
一 一些常見的sql實踐 1 負向條件查詢不能使用索引 not in not exists都不是好習慣 可以優化為in查詢 2 前導模糊查詢不能使用索引 而非前導模糊查詢則可以 3 資料區分度不大的字段不宜使用索引 原因 性別只有男,女,每次過濾掉的資料很少,不宜使用索引。經驗上,能過濾80 資料時...
sql優化技巧
1.比較運算子能用 就不用 增加了索引的使用機率 2.事先知道只有一條查詢結果時,使用 limit 1 limit 1 可以避免全表掃瞄,找到對應結果就不會再繼續掃瞄了 3.選擇合適的資料型別很重要 能用tinyint就不用smallint,能用smallint就不用int,磁碟和記憶體消耗越小越好...
Mysql常見優化技巧
mysql基礎打牢以後,優化就是一大難題。如何優化資料庫呢?這也是面試常見的問題,除了新增索引以外,我們還需要從這些方面考慮 1 sql語句和索引 程式猿常常考慮的難題 2 資料庫表結構 資料結構設計 3 系統配置 4 硬體 硬體和系統配置不做介紹,先簡單介紹一下mysql常見效能優化技巧 mysq...