查看数据库查询统计信息,我可以看到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。 这需要吗?我可以删除此驱动程序选项吗?这不能一劳永逸地在数据库中定义吗?
答案 0 :(得分:1)
您应该在创建连接后立即使用此选项设置每个数据库连接的编码。数据库的整理是另一种不影响当前连接编码的选项。 如果您保证默认设置mysql服务器以使用utf8连接,并且没有您的参与,其设置将不会更改(但在这种情况下,您可能会遇到应用程序的可移植性问题),您可能会错过此选项。 幸运的是,像SET NAMES这样的查询非常快。