在全局变量中声明查询

时间:2017-09-05 18:54:55

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

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

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

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);
}

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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