在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