Re: [請益] 關於大筆資料的統計

看板PHP作者 (跟著鄉民進來看熱鬧)時間17年前 (2008/03/04 19:50), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
: 也可以嘗試用php解決, 先用性別和分數做區分再跑一個for去統計 : SELECT A.sex, B.grade, count(*) FROM A, B : WHERE A.fid = B.fid : GROUP BY A.sex, B.grade : ORDER BY A.sex, B.grade : 應該會得到 : sex grade count(*) : F 0 X : F 1 X : .. : F 100 X : M 0 X : M 1 X : .. : M 100 X : 然後for去把count加起來, 這樣就只有一個sql qurey和O(200)的迴圈 : 或者0~50範圍比較大, 獨立一個sql query, 其他的一個query再搭配for : 這樣應該會比較快吧? : : . : : . : : . : : . : : fid是學生編號為唯一值,sex是性別,grade是成績 : : 大概是要做出一個如下的統計表 : : 0-50 50-60 60-70 70-80 80-90 90-100 : : ------------------------------------ : : 男筆數 : : 女筆數 : : 是我指令下錯了嗎???還是php跑的本來就很慢呢??? : : 建view的話速度可以變快嗎???要如何建呢?? 那如果是要做出一個學生姓別和選修的科目(複選)的比較呢?? 比如說:選修的科目(20個)放在 C 表格裡面,分別以c1,c2,c3..c20欄位代表, 欄位型態為tinyint,如果1為有選擇,0為沒有選擇,要做出如下表格 c1 c2 c3 c4......c20 ----------------------------- 男筆數 女筆數 如果說要用 select count(*),A.sex,C.c1.C.c2,C.c3....,C.c20 from A left join C on A.pid=C.pid group by sex,c1,c2...,c20,來計算出如上的表格,這樣不是更慢嗎?? 所以只能夠用 select count(*) from A left join C on A.pid=C.pid where A.sex='F' and C.c1=1 select count(*) from A left join C on A.pid=C.pid where A.sex='M' and C.c1=1 . . 的方式去跑..但是算出來還是非常的慢 只能說不知道是mssql的問題還是php連mssql的問題了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.230.162.86
文章代碼(AID): #17pJUF2S (PHP)
文章代碼(AID): #17pJUF2S (PHP)