31.65%的SQL查询是SET NAME。是否有必要?

时间:2015-05-30 17:22:10

标签: php mysql pdo

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

'db' => array(
            'driver' => 'Pdo',
            'dsn' => 'mysql:dbname=db;',
            'driver_options' => array(
                PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
            ),
        ),

数据库(MariaDB)的排序规则是utf8_general_ci。 这需要吗?我可以删除此驱动程序选项吗?这不能一劳永逸地在数据库中定义吗?

1 个答案:

答案 0 :(得分:1)

您应该在创建连接后立即使用此选项设置每个数据库连接的编码。数据库的整理是另一种不影响当前连接编码的选项。 如果您保证默认设置mysql服务器以使用utf8连接,并且没有您的参与,其设置将不会更改(但在这种情况下,您可能会遇到应用程序的可移植性问题),您可能会错过此选项。 幸运的是,像SET NAMES这样的查询非常快。