記錄乙個神奇的問題,解決方法分享給大家,碰到類似問題,可以試試這種方法。
ps:索引失效請注意關聯字段字符集是否相同
未修改前,sql查詢速度穩定 4 s 左右
執行計畫如下:
可以看到三個表(t2,t3,remote_***)未走索引,這三個表中的資料量也不多1000 - 3w 左右。
優化之後執行計畫如下:
可以看到所有的查詢都已經走了索引,但是查詢速度 14.323 s,而且優化這三個表,每增加乙個索引,整體查詢速度就會慢幾秒
原 sql 語句 t2,t3 相關的語句如下
left
join remote_***1 t2
on t2.fd_id = obj.fd_id and t2.qrcode_uuid = obj.fd_code_uuid
left
join remote_***2 t3
on t3.fd_id = obj.fd_id and t3.qrcode_uuid = obj.fd_code_uuid
修改之後
left
join
(select
*from remote_***1 )
as t2
on t2.fd_id = obj.fd_id and t2.qrcode_uuid = obj.fd_code_uuid
left
join
(select
*from remote_***2 )
as t3
on t3.fd_id = obj.fd_id and t3.qrcode_uuid = obj.fd_code_uuid
federated 遠端表在連線查詢時,如果發現出現類似情況,可以用
(select * from remote_*** )
將 遠端表remote_***
包一層,再將索引相關的條件也移動到裡面。
以本問題為例,將 fd_id 字段查詢條件也放在裡面
(select * from remote_***1 where fd_id = '2c90e41872dff0860172dff0868c0000')
修改完成之後,查詢0.575 s
mysql索引使增刪變慢 Mysql索引優化
2.mysql索引優化 2.1.explain執 計畫分析 2.2.索引命中策略 分析 2.3.索引分析總結 2.4.資料庫出現問題後如何死 而不 僵 資料庫卡頓情景 解決思路 sql及索引 質 的sql,避免索引失效 資料庫表結構 正規化,至少要符合3nf 系統配置mysql,linux 硬體1 ...
(索引)建立MySQL索引
建立索引的必要性 主鍵預設是建立索引的,而且具有唯一性 合適地建立索引後比不建立索引,提高了查詢速度 建立索引的語法 簡單索引 可以有重複資料 create index indexname on tablename column name 1舉例子說明如 建立乙個資料表,設定一些初始的資料,然後採用...
c mysql建立索引 MySQL 建立索引
1 索引建立原則 1 搜尋的索引列,不一定是所要選擇的列。換句話說,最適合索引的列是出現在where子句中的列,或連線子句中指定的列,而不是出現在select關鍵字後的選擇列表中的列。2 使用唯一索引。考慮某列中值的分布。索引的列的基數越大,索引的效果越好。3 使用短索引。如果對字串列進行索引,應該...