【記錄】mysql優化總結

mysql 優化記錄

需求:一個 跑馬燈播報最新中將的前20條記錄 功能,通過直接查詢數據來返回結果
問題:這種全範圍查詢,無法走索引
優化:通過redis list來優化,當新紀錄產生時,lpush,當數據量超過指定值(100或者更大),ltrim(0,20)
獲取數據時,獲取lrange。

問題&優化:子查詢不走索引,修改爲關聯查詢

問題&優化:數據插入較慢,因爲有一些不常用的索引,刪除索引

問題&優化:多次根據不同的條件查詢同一張表(數據量不大),修改爲單次查詢,在程序中再根據條件過濾

問題:

-- 查詢耗時50s左右
select * from 
(
    SELECT buyer_domain_id, buyer_id, buyer_mobile 
    FROM table_order 
    WHERE someCondition 
    GROUP BY buyer_id, buyer_domain_id HAVING COUNT(*) >= 1 AND COUNT(*) <= 100 
) t LIMIT 0,1000
-- 查詢耗時13秒左右
select * from 
(
    SELECT buyer_domain_id, buyer_id, buyer_mobile 
    FROM table_order 
    WHERE someCondition 
    GROUP BY buyer_id HAVING COUNT(*) >= 1 AND COUNT(*) <= 100 
) t LIMIT 0,1000
-- 查詢耗時2秒左右
SELECT buyer_domain_id, buyer_id, buyer_mobile 
FROM table_order 
WHERE someCondition 
GROUP BY buyer_id HAVING COUNT(*) >= 1 AND COUNT(*) <= 100 
LIMIT 0,1000

第一條沒走索引,還加了一層select * 全表,第二條增加了走索引,第三條減少了一層select *

問題&優化:索引列上做計算不走索引,修改爲計算好的值

問題&優化:數據類型不一致,不走索引

問題&優化:在凌晨統計昨日數據,或者在23:59統計當日數據,可以加一個年月日字段,並創建索引

問題&優化:order by create_time 可以優化爲order by id desc

問題&優化:大字段單獨存儲,

問題&優化:被關聯的表的關聯字段才需要建立索引,不是兩個表都建立

問題&優化:錯誤:exits比in好;用關聯查詢走索引效果或許更好,重要的是通過explain查看計劃

問題&優化:order by 是走索引的,所以看到select count(*) from table 比 select * from table order by id 慢是正常的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章