gpt4 book ai didi

php - 在每个查询中写入数据库名称是否真的比在每次页面加载时调用 mysql_select_db() 更快?

转载 作者:行者123 更新时间:2023-11-29 01:15:07 24 4
gpt4 key购买 nike

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

目前我们的页面流程是这样的(为清楚起见,使用半伪代码):

mysql_connect();
mysql_select_db('red');
mysql_query('SELECT * FROM apples');
mysql_query('SELECT * FROM cakes');

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

mysql_connect();
mysql_query('SELECT * FROM red.apples');
mysql_query('SELECT * FROM red.cakes');

真的会有所作为吗?我特别担心进行此更改所需的时间;我们会看到任何明显的结果吗?

值得吗?

最佳答案

基准:

$ 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

我说的是废话。

您的同事是否可能对 mysql 命令行客户端感到困惑,如果您切换到数据库,它将加载所有表和列名(可以使用 -A 开关避免)?

关于php - 在每个查询中写入数据库名称是否真的比在每次页面加载时调用 mysql_select_db() 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3732116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com