我有一個問題涉及到一個很大的MySQL數據庫的一般方法。我做了一些php代碼來與數據庫交互。我試圖分析一組龐大的數據(~13萬行,200列),並且一直在用不同的方法來做這件事。我一直在學習很多東西,而且我覺得我很快就能將它設置爲真的,但我仍然有點卡住。處理大型MySQL數據庫組織的最佳方式?
我從堅定的'excel'思維開始。我不斷地向數據集中添加越來越多的列,因爲我試圖爲了統計分析的目的而選擇各種各樣的數據。我所做的一些php/mysql腳本花費了數小時。
然後,至少基本工作,我瞭解到了連接。這是我猜想的一點啓示,但也導致我重寫所有內容,以便加入我的數據。最終的結果是性能大幅增加 - 現在需要幾個小時才花了大約15秒。
與幾個人聊天后,我得出的結論,我仍然可以使其更快。我建立的方式是,不同的數據樣本都包含在不同的表中。每個表格都有一個數據彙總在另一個表格中,該表格用作聯接的一部分 - 有關該特定數據集的一般信息存儲在該輔助表格中,以便於訪問並提高速度。現在
,我這裏的問題是這樣的:這將是我最好的方式來改變我的數據庫和應用工作,使數據的所有這些不同的樣本組合成一個單一的,大表?我一直在嘗試這一點,但它似乎並沒有比我現在使用的方法更快。
換句話說,現在我正在執行涉及多表連接的大量「小」查詢,而不是涉及多表連接的單個巨大查詢,是否更好?我一直在檢查查詢的執行時間,看起來連接正在導致這種新方法的放緩。
我的印象是,從PHP重複發送小型查詢到MySQL並不像發送單個查詢那麼優化,但是對於更復雜的查詢,如果不是這種情況,是否有一個轉折點?我是否已經達到了這一點?
那麼它取決於你使用的存儲引擎以及你如何索引表。等式有兩個方面:1.您使用的實際模式和2.您發佈的每個查詢。兩者都可以優化。 – prodigitalson 2011-02-23 23:37:45
好吧,這是很好的知道。這些不同的數據樣本的主要問題是,沒有簡單的方法來標準化它們,因爲它們中的每一行都是完全獨特的。目前,它們使用唯一的行ID(主鍵)和一組3-4個索引列進行索引,這些索引列定期用作SELECT查詢的一部分。但是,即使目前的更新似乎也需要很長時間 - 對於更大的表,使用SELECT INTO來提高速度會更好嗎? – vize 2011-02-23 23:53:32