MySQL的FIND_IN_SET函數因不使用索引而臭名昭著,導致查詢效率低。但是,在處理逗號分隔清單時,還有其他方法可以實現所需的索引行為。
提供的答案中描述的技術建議使用帶有參數的準備好的語句接受逗號分隔列表形式的字串。透過在預備語句中使用具有非 NULL 鍵的範圍類型,可以確保在執行 IN 子句時使用索引。
例如,以下查詢使用索引執行範圍搜尋'id'列:
explain select * from ratings where id in (2331425, 430364, 4557546, 2696638, 4510549, ...)
雖然這種方法可以實現高效的索引查詢,但至關重要的是考慮以下因素預防措施:
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3