MySQL是一款關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它提供了豐富的SQL語句和操作功能。其中,使用"explain"關(guān)鍵字可以獲得MySQL查詢執(zhí)行計劃。在"explain"執(zhí)行計劃中,"filtered"字段用于表示查詢結(jié)果集經(jīng)過"where"條件和"join"條件過濾后剩余的比例。
mysql>explain select * from user where age >20 and sex = 'male' order by create_time limit 10; +----+-------------+-------+------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | +----+-------------+-------+------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | user | ref | age | age | 4 | | 5000 | 0.021488355 | +----+-------------+-------+------+---------------+------+---------+------+------+-------------+
在上述執(zhí)行計劃中,"filtered"值為0.021488355。它表示查詢結(jié)果集從user表中先通過"age"索引過濾出約5000行記錄,然后再根據(jù)"sex"字段進行過濾,最終剩余的記錄數(shù)約為107,占比0.021488355。
理解和優(yōu)化"filtered"值是MySQL查詢優(yōu)化的重要方法之一。通過優(yōu)化查詢語句中的"where"條件和"join"條件,可以減少結(jié)果集中不必要的記錄,提高查詢效率和減少IO開銷,從而改善數(shù)據(jù)庫的性能。