在MySQL程序,我不知道這是一個愚蠢的問題,但我有這個兩個疑惑也許你可以幫我清除出:MYSQL優化和設計規則:PHP方法VS本地主機
如果我的數據庫和Web服務器位於同一主機上,是否有任何相關優勢,使我的過程有條件地從SQL數據庫過程中的表中選擇(使用多個SQL查詢)元素,而不是僅在Web服務器端腳本中實現它們(在我的案例PHP)的方法與其他的Web應用程序代碼?
其次,甚至更重要的是:我是否違反了任何設計規則?
更具體地說,我做了一個PHP腳本,根據各行的前一個選擇的數量確定的概率密度函數,這是這樣的,從表中選擇一個隨機行:
function acceptation_rejection_method($link,$tablename,$column,$condition="")
{
$max=get_col("max(".$column.")",$tablename,$link,$condition);
$min=get_col("min(".$column.")",$tablename,$link,$condition);
$bar_value=mt_rand($min,$max);
$count=get_nelements($tablename, $link,"where ".$column."<=".$bar_value);
$selected_row=get_row(mt_rand(0,$count-1), $tablename, $link,"where "
.$column."<=".$bar_value);
return $selected_row;
}
我函數實現接受拒絕方法(http://en.wikipedia.org/wiki/Acceptance-rejection_method),我的問題是:考慮到我的數據庫和我的Web服務器位於同一主機上,是否有任何改進將該腳本重寫爲返回行的SQL代碼? (假設我的應用程序的所有用戶都在不斷地使用它,就像每個請求中的一樣)
看來你沒有清理你的$ column,$ table和其他變量 - 這是一個突破一些設計規則肯定 –
symcbean是正確的,你在這裏專門討論的模型 –
MVC提到刪除流行的索賠,在調用mysql_query之前在get_nelements,get_row和get_col中執行清理,但是也許我應該在$ bar_value之前檢查$ count以及$ min和$ max值。感謝提及 – NotGaeL