Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite,不同的行,其中第1列和第2列的值A和B与B和A相同_Sqlite - Fatal编程技术网

SQLite,不同的行,其中第1列和第2列的值A和B与B和A相同

SQLite,不同的行,其中第1列和第2列的值A和B与B和A相同,sqlite,Sqlite,我正试图将一些数据插入我的数据库 但不幸的是,我对双重约会有个小问题 因为我的文件代表了一些足球比赛的结果 e、 g.Barcelona.txt 这是一样的。因此,我将把这两个值放入我的数据库中 "1","Spa","UCL","Barcelona","Athletico_Madrid","H","x","1","1","R","1396377900","14-04-01","Tue " "6","Spa","UCL","Athletico_Madrid","Barcelona","A","x"

我正试图将一些数据插入我的数据库

但不幸的是,我对双重约会有个小问题

因为我的文件代表了一些足球比赛的结果

e、 g.Barcelona.txt

这是一样的。因此,我将把这两个值放入我的数据库中

"1","Spa","UCL","Barcelona","Athletico_Madrid","H","x","1","1","R","1396377900","14-04-01","Tue "
"6","Spa","UCL","Athletico_Madrid","Barcelona","A","x","1","1","R","1396377900","14-04-01","Tue "
换句话说,如果我改变了一些值,A队就是B队,反之亦然。H A,10,比本垒打高然后我也在同一排

实际上,通过检查数据库中是否存在已转换的行,可以很容易地避免这些双值

rs = stmt.executeQuery( "SELECT * FROM WEDSTRIJD w WHERE " +
    "w.DATE = '"+ date +"' and " +
    "w.TEAM = '"+ opponent +"' and " +
    "w.OPPONENT = '"+ team +"' and " +
    "w.SCORED = "+ param[6] +" and " +
    "w.AGAINST = "+ param[5] +" ;" );
但是通过执行此检查,如果(rs.getRow()==0)-->插入行,则所有内容都变得非常慢。通常,插入+100.000行需要3秒钟,但现在通过此检查,需要+1小时25分钟


因此,有人知道更好的解决方案吗?哪个不是很可怕?

当数据库需要根据行的值搜索行时,它必须遍历表中的所有行以比较它们

当搜索列上(至少在某些列上)出现错误时,可以加快此类搜索。 索引越有用,查询返回的结果越少(因为数据库可以避免读取更多行),执行查询的频率也就越高

对于此特定查询,应在最具选择性的查找列上创建索引:

stmt.execute("CREATE INDEX whatever ON WEDSTRIJD(DATE, TEAM)");

您的数据库有哪些索引?谢谢您的建议,但遗憾的是,如果(database.value!=a和database.value2!=B和……,则不存在插入数据库(…)值(…)这样的事情。。。。。。。但我已经通过向数据库添加一个matchId和一个groupby解决了我的问题,我得到了我想要的结果
rs = stmt.executeQuery( "SELECT * FROM WEDSTRIJD w WHERE " +
    "w.DATE = '"+ date +"' and " +
    "w.TEAM = '"+ opponent +"' and " +
    "w.OPPONENT = '"+ team +"' and " +
    "w.SCORED = "+ param[6] +" and " +
    "w.AGAINST = "+ param[5] +" ;" );
stmt.execute("CREATE INDEX whatever ON WEDSTRIJD(DATE, TEAM)");