我想设置一个 MySQL 实例来完全拒绝某些类型的查询。例如,任何不使用索引的 JOIN 都应该失败并终止并显示在应用程序堆栈跟踪中,而不是运行缓慢并显示在 slow_query_log 中,并且没有简单的方法将其与导致它的实际测试用例联系起来。
此外,我想禁止使用“*”(如“SELECT * FROM ...”),这实际上会引发语法错误。从 MySQL 性能的角度来看,任何有问题或危险的事情都应该导致错误。
这可能吗?除了破解 MySQL 内部结构之外……有没有简单的方法?
最佳答案
如果你真的想控制用户/程序员通过 SQL 做什么,你必须在 MySQL 和你的代码之间放置一个限制访问的层,就像一个 ORM 只允许访问某些表,并且只允许访问某些查询。然后您还可以检查以确保表具有索引等。
您无法确定查询是否使用索引。这是由数据库中的查询优化器层决定的,逻辑可能会变得非常复杂。
关于mysql - MySQL 有某种 "strict performance mode"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2390977/