2011-10-16 57 views
2

JOIN是SQL數據庫的一個便利功能,但大數據庫(> 10GB)又如何呢?考慮三條(兩列)多對多關係表,因爲我們想要將項目關聯到單個案例(例如,一篇文章的標籤)。JOIN是一個不適合內存的大型mysql數據庫。

事實(糾正我,如果我錯了): 1.對於JOIN,三個表應適合內存。 2.通過PRIMARY KEY的單個SELECT不消耗內存。 3.當我們併發多個併發讀取連接時,多餘的連接將保持在隊列中(不會造成不成功的請求或過載)。

然後,執行三個簡單的SELECT查詢不是更好嗎?這使系統稍微慢一點,但我相信處理技嘉尺寸的整個表格更有效率。

有人可能會建議增加更多是最終的解決方案;但我認爲仍然處理如此龐大的表格並不容易。

使用PRIMARY KEY限制對簡單SELECT查詢的操作可以是一種實用的方法,可以高效地處理大型數據庫。

回答

4

如果您聲稱最好在三個獨立的表上進行選擇,然後在數據庫引擎之外自行加入數據,那麼您就錯了。數據庫會比你更好地加入你的查詢。這些表格並不都必須放入RAM才能使聯接工作。

+1

但是,如果你關心RAM,避免ORDER BY。 –

1

索引可以真正幫助大型數據庫。

這些可以幫助http://www.databasejournal.com/features/mysql/article.php/1382791/Optimizing-MySQL-Queries-and-Indexes.htm

http://www.tizag.com/mysqlTutorial/mysql-index.php

索引可以數據庫的實現而變化,他們有缺點太多,如果沒有設計/正確執行(這就是爲什麼你每場不只是指數)。

+0

PRIMARY KEY自動編制索引,並且我們有一個兩列表,因爲我們不需要其他列的索引。而且,索引所有內容都會使大型數據庫的寫入速度變慢。 – Googlebot

相關問題