表及其详细信息
“user”表存储用户详细信息并拥有10百万条记录
这样的查询需要多长时间?
select * from user where user_name = "Jhon"
select * from user where uid = "2331234534"
答案 0 :(得分:4)
首先,祝贺拥有1000万用户。
所需的时间取决于所有内容 - RAM多少,带宽是什么,数据库服务器上CPU的速度有多快。
要加快速度,请确保uid列有一个与之关联的索引,但如果它已经是主键,那么它应该已经完成了。
要了解它花了多长时间,请在PHPMyAdmin或其他工具中运行它,它会告诉你。如果这不是一个选项,如果您使用的是php,那么您可以像这样运行它:
<?php
$start_time = microtime(TRUE);
$result = mysql_query("select * from user where user_name = \"Jhon\"");
$end_time = microtime(TRUE);
echo "That query took ".$end_time - $start_time." seconds.";
?>
作为一般规则,通过int选择将比字符串更快 - uid方法是最常用的方法。这也允许您拥有一个名为Jhon的用户。
答案 1 :(得分:3)
如果您希望查询以最大速度运行,请确保您在“user_name”和“uid”上有索引,以防万一您可以在每个结尾处添加LIMIT 1
他们应该使用索引几乎立即返回结果 - 低于1秒。
关于索引的更新:
索引如何工作的一个非常好的解释是与库的比较。如果您拥有拥有数百万本图书的庞大图书馆并且您没有索引,那么每当有人搜索某本图书时,您都需要浏览所有书架。如果你有索引,你知道这本书就在这个特定的地方,你就去那里拿它。这就是为什么如果你有一百万或一千万或二千万,那真的无关紧要。当然,在某些时候你将不得不减少表的大小,但不要担心
关于索引所有字段的更新:
你不应该索引所有列。原因如下:它总是权衡。索引大大加快了从数据库读取的速度,但它们减慢了对它的写入速度。每次向数据库添加一行时,都必须刷新索引列表 - 这就是为什么你应该只索引你真正需要索引的列呢
答案 2 :(得分:0)
这是2个查询:
select * from user where user_name = "Jhon";
select * from user where uid = "2331234534";
如果表用户具有user_name的索引,则uid不应该花费很长时间来执行