利用冗餘字段解決查詢結果排序慢的問題

2021-05-22 23:21:00 字數 387 閱讀 1017

有兩個表 a, b  ,其中 a.type = b.id . a與b是多對一的關係。a中有98190條資料,b中有20條資料。現我要連查表a與b並以b.order (b.order做了索引)排序,

查詢執行了7551ms, 暈了,怎麼這麼慢,要是我的表a的資料成幾個數量級增長的話,問題就大了。

現在我的記數條數增加到399992行,再執行,27363ms!!!!!這樣下去會死人的。

現在我的解決方法是在a表中冗餘出乙個欄位order內容是a.order的內容

當資料為98190條時,用了30ms,

當資料到399992條時,用了453ms

在a.order上加上索引,399992條資料 16ms-32ms之間。

由此可見,適當的冗餘資料,可以提高查詢速度

mysql php結果排序 SQL查詢結果排序

公升序排序 使用order by子句時,預設情況下資料是按公升序排列的,故可以用asc關鍵字指點公升序排列,或者不指定,預設就是公升序,顯示效果是一樣的,如下圖 降序排序 當需要查詢結果降序排列時,必須在排序後指定desc關鍵字。如下圖是檢視職員薪水的降序排 公升序排序 使用order by子句時,...

mysql explain查詢結果字段說明

1 id 這是select的查詢序列號 2 select type select type就是select的型別,可以有以下幾種 簡單select 不使用union或子查詢等 primary 最外面的select union union中的第二個或後面的select語句 dependent unio...

mysql 查詢計畫結果字段含義分析

id列中的資料為一組數字,表示執行select語句順序 id值相同時,執行順序由上至下 id值越大優先順序越高,越先被執行 不包含子查詢或是union操作的查詢 primary 查詢中如果包含任何子查詢,那麼最外層的查詢則被標記為 primary subquery select列表中的子查詢 dep...