我最近寫了做它的工作,所有的數據被收集的調查申請。現在我必須分析數據,我有一些時間問題。 我必須找出有多少人選擇了什麼選項並顯示出來。優化的MYSQL COUNT ORDER BY查詢
我使用這個查詢,這確實做的工作:
SELECT COUNT(*)
FROM survey
WHERE users = ? AND table = ? AND col = ? AND row = ? AND selected = ?
GROUP BY users,table,col,row,selected
由於明顯的「?」我使用MySQLi(在PHP中)在需要時獲取數據,但我擔心這導致它太慢了。
該表由上述的所有元素(+的唯一ID)和它們都是整數。 解釋一些領域: 每個調查分爲3或4個表格(大小從2x3到5x5)與1至10幸福等級選擇形式。 (問題都擺在桌面的右側和頂部,然後你回答其中的問題相交)
用戶 - 年齡組
表,行,列 - 選擇上述
解釋 - dooooh以上
解釋現在隨着調查的完成以及表中約100萬條條目的查詢變得非常緩慢。有時需要3分鐘,有時(我猜)時間限制到期,你根本得不到任何數據。我也沒有訪問完整的數據庫,只是我的空「測試」之一,因爲負荷消費是有點偏執:S(和他的服務器似乎有點慢)
現在(初始文章後)我問題是:我故意留下索引,因爲在調查期間編寫了大量數據,這將是一個壞主意。但是由於目前還沒有新的數據進入,索引表的所有字段是否合理?索引從未超過10的整數有多少意義? (你可以猜到我沒有關於索引的線索)。我需要此表中的主要唯一ID嗎?我
我讀過的索引可能會幫助組,但只有當你由一個表中的第一列進行分組(因爲我的ID是第一,從我的角度來看,無用,我可以刪除它並獲得任何東西嗎?)
有另一種方式來寫我的查詢,將基本上做同樣的事情,但在較短的時間內?
感謝提前所有您的建議!
我會毫無疑問地將索引添加到列:用戶,表,列,行和選定。這應該會縮短運行查詢所花費的時間。 –