mysql - MySQL 有某种 "strict performance mode"吗?

标签 mysql

我想设置一个 MySQL 实例来完全拒绝某些类型的查询。例如,任何不使用索引的 JOIN 都应该失败并终止并显示在应用程序堆栈跟踪中,而不是运行缓慢并显示在 slow_query_log 中,并且没有简单的方法将其与导致它的实际测试用例联系起来。

此外,我想禁止使用“*”(如“SELECT * FROM ...”),这实际上会引发语法错误。从 MySQL 性能的角度来看,任何有问题或危险的事情都应该导致错误。

这可能吗?除了破解 MySQL 内部结构之外……有没有简单的方法?

最佳答案

如果你真的想控制用户/程序员通过 SQL 做什么,你必须在 MySQL 和你的代码之间放置一个限制访问的层,就像一个 ORM 只允许访问某些表,并且只允许访问某些查询。然后您还可以检查以确保表具有索引等。

您无法确定查询是否使用索引。这是由数据库中的查询优化器层决定的,逻辑可能会变得非常复杂。

关于mysql - MySQL 有某种 "strict performance mode"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2390977/

相关文章:

php - 在单个查询中使用两个推测表?

mysql - 如何在分组查询时获取其他行值?

mysql - 压缩 SQL SELECT 语句并返回更大的数据集

php - 左连接中的总和计数错误

php - 在 MySQL 中使用 SELECT DISTINCT 从数据中删除非字母字符

php - 无法获取 UTF-8 特殊字符以正确写入 MySQL (PHP)

php - 在保存到数据库之前我应该​​担心 Richtext 编辑器的内容吗?

java - Spring MVC Hibernate 应用程序加载数据库表

java - 如何使用 JDBC Appender 将错误日志保存到数据库中

mysql - 无法从 mysql 中的birthday_year 列创建列age