mysql幾十萬數(shù)據(jù)查詢慢 為什么MySQL在數(shù)據(jù)庫較大的時候分頁查詢很慢,如何優(yōu)化?
為什么MySQL在數(shù)據(jù)庫較大的時候分頁查詢很慢,如何優(yōu)化?使用合理的分頁方式以提高分頁的效率正如樓主所說,分頁查詢在我們的實際應(yīng)用中非常普遍,也是最容易出問題的查詢場景。比如對于下面簡單的語句,一般想
為什么MySQL在數(shù)據(jù)庫較大的時候分頁查詢很慢,如何優(yōu)化?
使用合理的分頁方式以提高分頁的效率
正如樓主所說,分頁查詢在我們的實際應(yīng)用中非常普遍,也是最容易出問題的查詢場景。比如對于下面簡單的語句,一般想到的辦法是在name,age,register_time字段上創(chuàng)建復(fù)合索引。這樣條件排序都能有效的利用到索引,性能迅速提升。
如上例子,當 LIMIT 子句變成 “LIMIT 100000, 50” 時,此時我們會發(fā)現(xiàn),只取50條語句為何會變慢?
原因很簡單,MySQL并不知道第 100000條記錄從什么地方開始,即使有索引也需要從頭計算一次,因此會感覺非常的慢。
通常,我們在做分頁查詢時,是可以獲取上一頁中的某個數(shù)據(jù)標志來縮小查詢范圍的,比如時間,可以將上一頁的最大值時間作為查詢條件的一部分,SQL可以優(yōu)化為這樣:
若對你有所幫助,歡迎點贊、關(guān)注支持哦。
mysql數(shù)據(jù)庫查詢好慢怎么解決?
28萬條數(shù)據(jù)量不是很大,字段稍微有點多,如果不加WHERE 條件的話,數(shù)據(jù)庫判定是查詢所有數(shù)據(jù)庫,而加了WHERE 條件時,數(shù)據(jù)庫判定要去詳細的查找某個數(shù)據(jù),所以速度自然會慢,建立索引可以解決您的問題;CREATE INDEX 索引名 ON 表名 (WHERE 條件用到的列名,如有多個就以逗號分隔)這次在去WHERE 的時候就會快很多
mySql為什么查詢時有時快,有時慢?
主鍵約束。
當數(shù)據(jù)量達到百萬以上的時候,你用主鍵去搜索某一條數(shù)據(jù)時速度是極快的。但當你不用主鍵去搜索的時候速度就降了幾十倍甚至上百倍,這個是主鍵的好處。索引。當你的表字段設(shè)置有索引的時候,搜索速度比不創(chuàng)建索引要快幾倍至幾十倍。sql語句不夠優(yōu)化。在查詢某數(shù)據(jù)的時候,能不用*就盡量不用,想要哪個字段就查哪個,多余的不要,這樣就能達到數(shù)據(jù)傳輸精簡化,讓查詢速度也能快上許多。多表聯(lián)合查詢。在大數(shù)據(jù)量的時候這個多表查詢盡量不用,畢竟是很耗內(nèi)存的,寧愿用其他語言循環(huán)執(zhí)行簡單的 select 字段 from 表名 where 條件 這樣的簡單sql語句,這樣也能加快速度。