在启动查询之前,有人知道MySQL是否涉及任何预处理程序优化吗?
考虑以下查询:
字符串查询=“在状态> = @minStatus AND状态< = @maxStatus AND类型> = @minType AND类型< = @maxType的情况下从赠品中选择SELECT Giveaway_id”;
如果@minStatus和@maxStatus以及@minType和@maxType相等,我们可以以更优化的形式编写上述查询:
字符串查询=“在状态= @minStatus AND类型= @minType的情况下,从SELECTaway中选择SELECT Giveaway_id”;
我想知道MySQL是否足够聪明,可以胜任其自身的工作,还是应该在它在C#应用程序中启动之前帮助它编写适当的优化语句.
谢谢.
解决方法:
这个评论太长了.
您所指的步骤不是“预处理”,而是“编译和优化”.而且,是的,MySQL确实做了各种优化,描述了here.
但是,您的问题的含义是,单个相等比较=将比两个不相等快得多.通常情况并非如此.更大的问题是状态和类型的索引是否可用.索引的使用将是性能的主要因素-多个不平等因素可能会阻止MySQL找到最佳索引.
我的建议是为您的查询创建正确的索引.然后编写查询以确保它们利用了索引.
标签:optimization,sql,c,mysql,preprocessor
来源: https://codeday.me/bug/20191119/2035691.html