mysql優化手冊v1.0

zwc4228986發表於2022-06-24

查詢資料儘量不用JOIN,用with(禁止超過3張表JOIN)

錯誤:
App(Users::class)->leftjoin('users_basic')->limit(20)->get()
正確:
App(Users::class)->with('usersBasic')->limit(20)->get()

2.查詢條件主表超過100條的禁止使用whereHas

錯誤:
App(Users::class)
->whereHas('UsersBasic',function($query)use($mobile){
    $query->where('mobile','like','$mobile%')
})
正確:
App(Users::class)
->whereHasIn('UsersBasic',function($query)use($mobile){
    $query->where('mobile','like','$mobile%')
})
App(Users::class)
->whereHasJoin('UsersBasic',function($query)use($mobile){
    $query->yjwhere('mobile','like','$mobile%')
})

使用這個元件

composer require eugenes/laravel-builder

3.批量更新一定要走主鍵,不要直接更新

原因。會鎖住大量資料,導致出現死鎖

解決方法:先查出主鍵,然後通過主鍵更新

4.JOIN方法關聯條件一定要加索引

5. 儘量避免在欄位開頭模糊查詢,會導致資料庫引擎放棄索引進行全表掃描。

錯誤
SELECT * FROM t WHERE username LIKE '%陳%'
正確
SELECT * FROM t WHERE username LIKE '陳%'
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章