舉例說明百萬級(jí)或千萬級(jí)數(shù)據(jù)表 添加索引來優(yōu)化查詢效率 ?并 配合 LIMIT 最大化提高查詢效率,此方法僅限于返回的結(jié)果集龐大。本來?xiàng)l件下就最多返回幾條或幾十條 就沒必要用這個(gè)方式來提升效率了。
SELECT * ?FROM lqr_member WHERE username = ? ? and usertype= ? ?
?與
SELECT *? FROM lqr_member WHERE username = ?? and usertype= ?? LIMIT 1000
這兩句查詢語句其實(shí)結(jié)果是一樣的,username和usertype是一個(gè)組合索引,單殺效率遠(yuǎn)遠(yuǎn)不同,
當(dāng)數(shù)據(jù)在幾十萬的時(shí)候執(zhí)行查詢的時(shí)間基本相差幾毫秒
當(dāng)數(shù)據(jù)在百萬級(jí)或千萬級(jí)的時(shí)候就會(huì)發(fā)現(xiàn)SELECT *? FROM lqr_member WHERE username = ?? and usertype= ? 這條語句的效率特別慢,甚至?xí)缘裟闼械膬?nèi)存報(bào)錯(cuò)。
但是第二條缺還能達(dá)到秒查的效率。
為什么呢?
因?yàn)榈谝粭l是返回所有符合條件的數(shù)據(jù),如果數(shù)據(jù)量龐大返回結(jié)果集時(shí)候就會(huì)很慢
第二條不管返回結(jié)果集多少只返回前100條 明顯效率提升了,一般情況下你根據(jù)你的條件進(jìn)行預(yù)估,是否需要把所有的結(jié)果集都顯示出來,如果不需要建議加個(gè)LIMIT條件篩選吧 會(huì)大大提升你這方面的體驗(yàn)。