我正在尝试进行投票后类似于堆栈溢出投票并投票的投票,现在我使用了(但它正在工作的方法)然而有些事情感觉不对,希望有人会建议一些有用的调整。这是我的jquery代码:
var x = $("strong.votes_balance").text();
$("input.vote_down").click(function(){
$.ajax({
type: "POST",
url: "http://localhost/questions/vote_down/4",
success: function()
{
$("strong.votes_balance").html((parseInt(x) - parseInt(1)));
$("input[type=button]").hide();
$(".thumbsup_hide").show();
}
});
});
$("input.vote_up").click(function(){
$.ajax({
type: "POST",
url: "http://localhost/questions/vote_up/4",
success: function()
{
$("input[type=button]").hide();
$("strong.votes_balance").html((parseInt(x) + parseInt(1)));
$(".thumbsup_hide").show();
}
});
});
});
这是我的HTML:
<div class="thumbsup thumbsup_template_up-down" id="thumbsup_49">
<form method="post" id="voting_form">
<input type="hidden" value="49" name="thumbsup_id"/>
<span class="thumbsup_hide">Result:</span>
<strong class="votes_balance"><?=$row_q->post_vote?></strong>
<input type="button" title="Good Comment!" value="+1" name="thumbsup_rating" class="vote_up"/>
<input type="button" title="Bad Comment!" value="-1" name="thumbsup_rating" class="vote_down"/>
</form>
</div>
$ row_q-&gt; post_vote等于某个数字。现在,当我单击“投票”按钮时,它会增加强值,如果我单击“投票”,它会减少它。
我正在使用CI(codeigniter)而非本机php。
我如何衡量这一性能,不久前投票或投票失败花了两秒多的时间来执行,我在我的查询中添加了LIMIT 1,现在它运行得更快,我认为这应该会更快。感谢您的评论
对不起,我在这里省略了这个是我的投票和投票功能:
$this->db->query("UPDATE $table SET $what_field = ($what_field + 1) $wheremore WHERE $what_id = '$value' LIMIT 1");
以下投票:
$this->db->query("UPDATE $table SET $what_field = ($what_field - 1) $wheremore WHERE $what_id = '$value' LIMIT 1");
更新我认为事情一般都很慢的原因是因为我对jquery不够,我觉得我的桌子很好看
更新II
我刚刚从jquery ajax函数中删除了php部分,只是为了将数字增加1,它仍然很慢。
更新III
当我使用phpmyadmin运行查询时,它运行范围从0.3秒到1.77秒,因某种原因而变化。
答案 0 :(得分:6)
WHERE $what_id = '$value'
您不应该使用字符串/ varchars作为标识符。这很不自然。使用数字/整数。
WHERE $what_id = $value
是的,这会影响数据库性能,尤其是当行数增加时。
答案 1 :(得分:1)
您的数据库表$table
应该有$what_id
的索引。通常它会是主键,但由于添加LIMIT 1
改变了任何东西,情况可能并非如此?
答案 2 :(得分:0)
您的数据库是什么样的?确保$what_id
字段已正确编入索引,如果可能,最好应将其作为主键。