我想提取所有具有“ valeur_lisible”,“ lnk_attributs_objets.valeur”或“ attribut.nom”等于“%gingivite%”的人员。
我的请求如下:
#include <iostream>
#include <regex>
using namespace std;
string cutter(const string &src) {
regex e("[ ;]+");
string out = std::regex_replace(src,e," ");
return out.substr(1, out.size()-2);
}
int main()
{
string s1 = "[1 -2.5 3;4 5.25 6;7 8 9.12]";
cout << cutter(s1) << endl;
return 0;
}
在我的小型数据库(926人)中,这已经花费了大约4s。
有没有一种方法可以优化我的请求?
我是SQL的初学者。
备注:我使用LEFT JOIN是因为一个人可以具有valeur_lisible的属性,但是没有objets(属性链接到objets)并且相反。
我将要检查为牙龈炎的值涂成蓝色。
答案 0 :(得分:0)
我终于找到了如何显着减少此请求的时间:
-使用INNER JOIN的UNION代替LEFT JOIN
-将WHERE条件放在“内部联接”上
这是我的最终要求:
year;country;kills
1970;Dominican Republic;58
1970;Mexico;130
1970;Philippines;160
1970;Greece;78
1970;Japan;101
1970;United States;217
1970;Uruguay;218
1970;United States;217
1970;United States;217
仅需0.07s(而不是之前的4s)