在每个查询中写入数据库名称比在每个页面加载时调用mysql_select_db()更快吗?

ano*_*non 2 php mysql performance query-optimization

我在一个相当大的网站工作; 我们每月的页面浏览量约为4亿至5亿.我们使用PHP和MySQL.

目前我们的页面流程就像这样(为了清晰起见,半伪代码):

mysql_connect();
mysql_select_db('red');
mysql_query('SELECT * FROM apples');
mysql_query('SELECT * FROM cakes');
Run Code Online (Sandbox Code Playgroud)

我的一位同事建议mysql_select_db减慢页面加载速度并增加数据库服务器的负载,并建议将我们的"流程"更改为:

mysql_connect();
mysql_query('SELECT * FROM red.apples');
mysql_query('SELECT * FROM red.cakes');
Run Code Online (Sandbox Code Playgroud)

是真的会有所作为吗?我特别关注做出这一改变所需的时间; 我们会看到任何明显的结果吗?

这值得么?

Wri*_*ken 8

基准测试:

$ cat 1.php 
<?php
mysql_connect('localhost') or die(mysql_error());
mysql_select_db('test') or die(mysql_error());
mysql_query('SELECT SQL_NO_CACHE * FROM foo') or die(mysql_error());
mysql_query('SELECT SQL_NO_CACHE * FROM bar') or die(mysql_error());
?>
$ cat 2.php 
<?php
mysql_connect('localhost') or die(mysql_error());
mysql_query('SELECT SQL_NO_CACHE * FROM test.foo') or die(mysql_error());
mysql_query('SELECT SQL_NO_CACHE * FROM test.bar') or die(mysql_error());
?>
$ time ( for i in {1..100} ; do php 1.php; done;)

real    0m3.554s
user    0m2.300s
sys     0m1.188s
$ time ( for i in {1..100} ; do php 2.php; done;)

real    0m3.555s
user    0m2.292s
sys     0m1.208s
Run Code Online (Sandbox Code Playgroud)

我打电话给胡说八道.

您的同事是否可能与mysql命令行客户端混淆,如果切换到数据库(可以通过-A交换机避免),它将加载所有表和列名?