![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 Sanji ![]()
![]() |
兩個資料表裡面的資料加起來不到40000筆 為什麼以下的語法會要跑到20幾分鐘 我把兩個資料分開去執行 就跑很快 是關聯的原因嗎? |
1樓 |
可以試試看
1.不要篩選.*,把欄位一個一個列出來 2.不要用FROM IN30 a, IN20 b,改成用 FROM IN30 a INNER JOIN IN20 b ON a.uid = b.uid WHERE b.data_sts = 'Y' ... ...
本篇文章回覆於2017-09-23 19:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
Sanji ![]() |
可是我改了之後 我連跑一個資料欄也要跑到2分鐘
本篇文章回覆於2017-09-24 00:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
作者回應
Sanji ![]() |
目前的狀況
我可以顯示出第一頁(也就是20筆資料) 也算的出總資料數 但是我只要換到下一頁 就一片空白 這不曉得是哪裡出了問題
本篇文章回覆於2017-09-24 01:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
1.我沒有這樣使用過GROUP BY,我猜也許是GROUP BY的問題
2.會一片空白應該是你SQL語法的問題,你要去攔截你的SQL語法,看看哪個地方有問題 SQL相關語法可以參考 這一篇
本篇文章回覆於2017-09-24 08:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓 |
我用類似的語法跑起來是還蠻快的,
不過可能是我資料量比較少的關係吧...
本篇文章回覆於2017-09-24 08:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓 |
話說回來,
2分鐘比20幾分鐘好多了吧, 你再加上後面的語法試試看, 有LIMIT應該會比較快
本篇文章回覆於2017-09-24 08:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓
作者回應
Sanji ![]() |
我改了group by
現在變成1分半就可跑完 而且也跑的出來第二頁只是要等比較久(大概10秒左右) 但是第三頁跟之前第二頁一樣 是一片空白 還有辦法再讓它跑更快嗎
本篇文章回覆於2017-09-24 14:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
8樓 |
結果你的全部的語法是什麼?
跑1,2分鐘感覺還是有點慢。
本篇文章回覆於2017-09-24 17:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
9樓
作者回應
Sanji ![]() |
主要要跑很久的語法就是兩個
一個是 還有一個是 以下是用explain 觀察的 這兩行語法各跑一樣的行數 其中b table跑了12324行 a table跑了22908行
本篇文章回覆於2017-09-24 23:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
10樓
作者回應
Sanji ![]() |
補充一下
第一個語法是在跑所有的資料 第二個語法是跑要顯示在目前網頁上的資料
本篇文章回覆於2017-09-24 23:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
11樓
作者回應
Sanji ![]() |
還有我發現
它每一頁都要跑一段時間 當我重新再進來的時候 便跑很快 感覺很像跟buffer之類有關?
本篇文章回覆於2017-09-24 23:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
12樓 |
每行都跑一定會比較慢的,
不過有什麼理由一定要全部跑完呢? 通常是不會這樣做的。 我不知道這樣group by 的意義為何, 其他欄位的資料會不一樣嗎, 還是針對同樣b.invoice_id的其他欄位資料都會一樣? SQL會將有用過的SQL語法暫存在記憶體, 如果又呼叫了會馬上從記憶體撈資料, 所以速度會變快很多。
本篇文章回覆於2017-09-25 00:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
13樓
作者回應
Sanji ![]() |
因為in20是屬於主檔 而in30是屬於明細檔的部分
所以如果不用group by 的話 會找到很多筆重複的uid
本篇文章回覆於2017-09-25 02:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
14樓 |
既然是明細為什麼只列出一筆,
還是你要的是最新的那一筆?
本篇文章回覆於2017-09-25 08:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
15樓
作者回應
Sanji ![]() |
我是要印出主檔
明細的部分可以藉由點擊主檔 進入到另一個PHP檔 看到該檔的明細
本篇文章回覆於2017-09-25 11:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |