【问题标题】:Declaring queries in global variables在全局变量中声明查询
【发布时间】:2017-09-06 02:56:48
【问题描述】:

我目前正在重新编写代码,并且有很多用全局变量编写的查询,但我注意到其中一些查询只使用了一次。我假设第二种方法对于该查询会更好。我是正确的?第二种方法也使用更少的内存或没有区别?

当前方法(使用全局变量):

char g_query[] = "SELECT %s FROM %s WHERE %s >= %i";
void func()
{
    printf(g_query, "name", "table", "something", 1);
}

第二种方法(不使用全局变量):

void func()
{
    printf("SELECT %s FROM %s WHERE %s >= %i",  "name", "table", "something", 1);
}

【问题讨论】:

  • 查看装配体。根据使用情况、优化器以及优化代码的程度,您可以获得相同的结果。

标签: c++ mysql optimization global-variables query-optimization


【解决方案1】:

他们都很顽皮。我们不再在代码中嵌入这样的查询。

改用参数化查询或存储过程。

否则你很容易受到 SQL 注入攻击和其他恶意攻击。

至于速度,瓶颈在于数据的获取,更不用说printf调用中字符串的造型了。不要让使用全局变量的性能方面或以其他方式影响您的设计决策。

参考:https://en.wikipedia.org/wiki/SQL_injection

【讨论】:

  • 我知道 SQL 注入,这只是一个简单的例子,但感谢您的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
相关资源
最近更新 更多