Mysql 建立索引之後反而變慢(已解決)

2021-10-08 03:31:44 字數 1378 閱讀 6564

記錄乙個神奇的問題,解決方法分享給大家,碰到類似問題,可以試試這種方法。

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 使用短索引。如果對字串列進行索引,應該...