采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老師您好 關於第一種優化後面的分頁會越來越差 還有中間結果很大時效率會扁差這邊不是很懂 有具體一點的例子麼?非常感謝
因为limit 的限制,如果limit 1000010 10 这样子查询,实际上mysql会查询出1000020条记录,并返回最后的10条,所以使用limit 分页越往后性能会越差。
感謝老師
我知道分頁limit語法會慢的原因了 但是思考研究了好一陣子,透過第二種改進的優化會變更有效率的原因我還是不是很確定 是不是和以下2點有關? 1.mysql語法執行順序有關 join和select執行會優先於limit 2.select只要包含非主鍵的field就無法只在索引樹上操作 而要在帶有完整資料的(關聯表)上操作,因為索引樹比完整資料的表的樹小很多會大幅減少查询出查询出1000020条的io操作的時間,即使後來多了和符合條件虛擬表join的操作時間仍是快上很多 順便補問一下 我上面第2點的說法是不是有些錯誤?是不是只有索引和主鍵會有tree 完整的資料只會存在作業系統的page內 可以透過索引tree的指標之類的找到? 再請老師指點迷津 感謝
是的,基本上就是这样,利用主键索引先行查询出符合条件的数据的主键,然后再通过主键关联进行其它列的查询,这样查询性能就基本上固定了。另外,在Innodb中只有主键是可以定位到一行上所有数据的,二级索引叶节点指现的是主键。
登录后可查看更多问答,登录/注册
从基础设计入手,设计高性能可扩展的千万级数据库架构
759 18
1.4k 12
925 9
1.0k 8
1.0k 7