MySQL有某种"严格的性能模式"吗?

Ale*_*x R 5 mysql

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

另外,我想禁止"*"(如"SELECT*FROM ..."),并且基本上抛出语法错误.从MySQL性能角度来看,任何有问题或危险的东西都应该导致错误.

这可能吗?除了攻击MySQL内部......有一个简单的方法吗?

Ove*_*ked 1

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

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