我正在使用此查询来检查用户名是否已存在或不在数据库中使用ajax 因此,直到现在我只有几个记录数据库bt在未来的用户名单将是巨大的,所以我想提高查询的性能这样一来,检查用户名存在将花费更少的时间。如何提高mysql查询的性能?
我该如何改进以下查询?对db的索引是可行的解决方案吗?
check.php
<?php
if(isset($_POST['user_name']))
{
$user_name=$_POST['user_name'];
include("include/conn.php");
$sql_check = mysql_query("select userid from `vector`.`signup` where userid='".$user_name."'")
or die(mysql_error());
if (mysql_num_rows($sql_check)>0)
{
echo "no";
}
else
{
echo "yes";
}
}
?>
my jquery code
<script language="javascript">
$(document).ready(function()
{
$("#uname").blur(function()
{
$("#msgbox").removeClass().addClass('messagebox').text('Checking...').fadeIn("slow");
$.post("check.php",{ user_name:$(this).val() } ,function(data)
{
if(data=='no') //if username not avaiable
{
$("#msgbox").fadeTo(200,0.1,function()
{
$(this).html('This User name Already exists').addClass('messageboxerror').fadeTo(900,1);
});
}
else
{
$("#msgbox").fadeTo(200,0.1,function()
{
$(this).html('Username available to register').addClass('messageboxok').fadeTo(900,1);
});
}
});
});
});
</script>
是的,把一个索引放在'userid'上。(编辑,是的,对不起,在where子句中。 – 2011-03-27 17:29:14
@Adam这是不正确的意思列。@eclair您需要创建用户标识的索引。如果用户ID是你的主键,然后指数会被自动创建。 – 2011-03-27 17:31:53
@Adam,我假设你的意思的用户ID? – 2011-03-27 17:32:03