我在一个产品上工作,给用户很大的“灵活性”来创建sql,即他们可以轻松地设置查询,可以将系统带到它的膝盖与包含性where子句。
我希望能够在可能出现这种情况时警告用户,我想知道是否有任何已知的策略可以智能地分析查询,从而实现这一目标?
发布于 2011-03-15 23:55:52
我能感受到你的痛苦。我以前也有过类似的任务。这是一场持续不断的斗争,用户一方面要求SQL的所有特性和功能,另一方面又抱怨它太复杂,对他们没有帮助,也没有阻止他们做愚蠢的事情。
将分页添加到查询中不会阻止执行不好的查询,但会减少损害。如果只显示SELECT * from reduce返回的前50条记录,并提供翻页到下50条记录的功能,依此类推,就可以避免内存不足问题并减少性能影响。
我不知道它是否适合您的数据/业务领域;但是当用户不提供表连接时,我会强制添加表连接。如果查询包含表A和表B,则A.ID需要等于B.ID;我将其相加。
如果您不介意编写特定于数据库的代码,我知道您可以从数据库( Oracle -http://www.adp-gmbh.ch/ora/explainplan.html中的Explain Plan)获取有关查询的数据。您可以先对他们的查询执行计划,然后使用查询结果来提示或警告用户。但细节将根据您使用的数据库而有所不同。
https://stackoverflow.com/questions/5314246
复制相似问题