sql 效率問題

來源:互聯網
上載者:User
有這樣一個疑問,如果是一系列比較複雜的操作,跨表、累加之類的,簡單的 sql 可能需要執行兩個以上才能完成。

用程式設計語言多次執行,結果集裡面折騰有效率呢;還是想盡辦法寫個高深的 sql,一次解決問題呢?

俺 sql 很水,程式設計語言也只是中下遊水平,又有一顆追求優雅、高效之心。

舉個例子:

有個暫存資料表,儲存 pid, tid, duration,通過一次 select,將 (pid, tid) 作為唯一組合,統計其出現次數(count),和 duration 累加總和。
然後將 pid, tid, count, duration 存入另外一個表,還要保證另外一個表的 (pid, tid) 是唯一組合。

插入部分的唯一性已經寫出了稍微複雜的 sql,現在在考慮是將第一部分的結果集遍曆再分別插入,還是再考慮一個更複雜的 sql。

ps: 第二部分插入的題目在:http://segmentfault.com/q/1010000000723454
所用的 sql 為:

alter table stat add unique index pid_and_tid (pid, tid);insert into stat (pid, tid, count, duration)    values (1, 1, 1, 1)    on duplicate key update    count = count + 1, duration = duration + 1

回複內容:

有這樣一個疑問,如果是一系列比較複雜的操作,跨表、累加之類的,簡單的 sql 可能需要執行兩個以上才能完成。

用程式設計語言多次執行,結果集裡面折騰有效率呢;還是想盡辦法寫個高深的 sql,一次解決問題呢?

俺 sql 很水,程式設計語言也只是中下遊水平,又有一顆追求優雅、高效之心。

舉個例子:

有個暫存資料表,儲存 pid, tid, duration,通過一次 select,將 (pid, tid) 作為唯一組合,統計其出現次數(count),和 duration 累加總和。
然後將 pid, tid, count, duration 存入另外一個表,還要保證另外一個表的 (pid, tid) 是唯一組合。

插入部分的唯一性已經寫出了稍微複雜的 sql,現在在考慮是將第一部分的結果集遍曆再分別插入,還是再考慮一個更複雜的 sql。

ps: 第二部分插入的題目在:http://segmentfault.com/q/1010000000723454
所用的 sql 為:

alter table stat add unique index pid_and_tid (pid, tid);insert into stat (pid, tid, count, duration)    values (1, 1, 1, 1)    on duplicate key update    count = count + 1, duration = duration + 1

幾乎任何時候降低資料庫的 計算複雜度 都是好的。

記憶體可重複利用,容易擴充,在大多數情境下都可以利用記憶體來換取資料庫效能,即:從資料庫中簡單地取出資料,再在記憶體中處理成想要的資料。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.