我正在使用此查詢來檢查用戶名是否已存在或不在數據庫中使用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