關於mysql表中有大文字limit慢的優化

2022-04-09 18:26:27 字數 722 閱讀 3238

問題場景:

商品表goods,裡面有幾個大文字字段,型別用的mediumtext,表中記錄28萬多。分頁查詢時用limit,在一般pc上需要12秒左右,這個數量級的資料不應該這麼慢。

原因分析:

幾個大文字拖慢了查詢速度,如果只查主鍵或數字型別的字段則很快。有人說你分頁幹嘛查大文字啊,原因是產品經理和設計師一致認為分頁應該顯示些摘要比較美觀。

解決方案:

1.通用做法:每次分頁查詢時,都提供一下開始id,速度很快。

select *

fromgoods

where id>65310limit 20;

2.變通方法:先查詢出一頁的主鍵id,然後in語句查詢,速度稍慢,效能主要損耗在先查id上;但很方便,對於現有程式改動最小。

select *

fromgoods

where id in(

select id from(

selectid

fromgoods

limit 63660,20) tt

)

至於為何要在in語句裡又包了一層臨時表,因為mysql語法限制在in語句不能使用limit。

ps:由於保護專案的隱私,以上查詢用了星號。

**:

html中有序列表ol中的li前面不顯示數字

最近做專案遇到這樣乙個問題,就是前端想用ol有序列表,以此達到顯示每個li元素的前面的數字,但是在使用layui框架之後,數字無法顯示。如圖 注 這是在引入layui.css檔案之後的樣子 首先,這個問題一定是引入的css檔案修飾了原來的樣式,所以要增加新的樣式覆蓋掉引入的css檔案的樣式,而我們自...

mysql大文字搜尋

mysql內建了三種儲存引擎,分別是innodb,myisam和memory,一般情況下,mysql5.x之後的版本都是使用innodb儲存引擎.三種引擎的對比 innodb 支援事務操作 支援自動增加列 具有行級鎖定 myisam 不支援事務,也不支援外來鍵,但是訪問速度快 對大文字搜尋效能較好 ...

mysql 大表 驅動 MySQL小表驅動大表

在了解之前要先了解對應語法 in 與 exist。in後的括號的表示式結果要求先輸出一列字段。與之前的搜尋字段匹配,匹配到相同則返回對應行。mysql的執行順序是先執行子查詢,然後執行主查詢,用子查詢的結果按條匹配主查詢。exist後的括號裡則無輸出要求,exist判斷後面的結果集中有沒有行,有行則...