MYSQL和PHP获取记录的性能

时间:2012-05-25 05:50:20

标签: php mysql

场景1

我有一张桌子可以说“会员”。在该表“成员”中,我有7个字段(memid,login_name,密码,年龄,城市,电话,国家/地区)。在我的表中我有10K记录。我需要获取一条记录。所以我正在使用像这样的查询

mysql_query("select * from member where memid=999");

场景2

我有一个名为“member”的同一个表,但是我正在像这个成员和member_txt一样拆分表。在我的member_txt表中,我有记忆,年龄,电话,城市,国家),在我的会员表中,我有记忆,login_name,密码。

哪种方法可以快速获取数据?要么转到单表还是将表拆分成两个参考?

注意:我需要在PHP和MYSQL中获取特定数据。请告诉我哪种方法最好。 我们有10K记录

3 个答案:

答案 0 :(得分:2)

为了您自己的健康,请使用单表方法。

只要您使用memid的主键,事情就会快速发生。这是因为PRIMARY KEY会自动分配一个索引,它基本上可以告诉数据的确切位置,并且无需通过它本来可以执行的数据。

来自http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

  

索引用于快速查找具有特定列值的行。   如果没有索引,MySQL必须从第一行开始然后读取   通过整个表来查找相关的行。越大了   表,这个成本越多。如果表具有列的索引   有问题的是,MySQL可以快速确定要寻求的位置   数据文件的中间,而不必查看所有数据。如果   一个表有1000行,这比阅读快至少100倍   顺序。如果您需要访问大多数行,则更快   按顺序读取,因为这可以最大限度地减少磁盘搜索。

您的第二种方法只会使您的系统更加复杂,并且不会带来任何好处。

使用方案1。

答案 1 :(得分:0)

请制作memid主/唯一密钥,然后让一个表比有两个表更快。

答案 2 :(得分:0)

一般情况下,只要您使用主键访问,就不会对10k行的性能产生太大影响。

另请注意,从一个表中获取数据也比从两个表中获取数据更快。

如果要进一步优化,请使用select语句中的列名而不是*运算符。