Php 31.65%的SQL查询是设置名称的。有必要吗?

Php 31.65%的SQL查询是设置名称的。有必要吗?,php,mysql,pdo,Php,Mysql,Pdo,查看数据库查询统计信息,我可以看到31.65%的SQL查询是设置选项的。我正在使用带有PDO扩展的Zend Framework 2。除了在my global.php中,我不在任何地方使用SET选项: 'db' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=db;', 'driver_options' => array(

查看数据库查询统计信息,我可以看到31.65%的SQL查询是设置选项的。我正在使用带有PDO扩展的Zend Framework 2。除了在my global.php中,我不在任何地方使用SET选项:

'db' => array(
            'driver' => 'Pdo',
            'dsn' => 'mysql:dbname=db;',
            'driver_options' => array(
                PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
            ),
        ),
数据库(MariaDB)的排序规则为utf8\u general\u ci。
需要这个吗?我可以删除此驱动程序选项吗?不能在数据库中一次性定义此选项吗?

您应该在创建连接后使用此选项设置每个数据库连接的编码。数据库排序是另一个不影响当前连接编码的选项。 如果您保证mysql服务器默认设置为使用utf8连接,并且在没有您的参与的情况下其设置不会更改,那么您可能会错过此选项(但在这种情况下,您的应用程序的可移植性可能会有问题)。
幸运的是,像集合名这样的查询。。。速度相当快

我如何知道mysql服务器是否默认设置为使用utf8连接?set NAMES“charset\u name”语句相当于这三条语句:
set character\u set\u client=charset\u name;设置字符集结果=字符集名称;SET character\u SET\u connection=charset\u name
[您应该在服务器上打开mysql配置文件(通常是/etc/my.cnf),查找[mysqld]部分,最后确保这些选项设置为UTF-8。此外,您还应该在
[client]
部分中设置为utf8 client encoding。通常您应该在conf.file中设置如下:
[mysqld]init\u connect='SET collation\u connection=utf8\u unicode\u ci'字符集服务器=utf8排序服务器=utf8\u unicode\u ci[client]默认字符集=utf8
这已经很彻底了。谢谢!