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
sqlite:在查询一对多数据库时避免全表扫描_Sqlite - Fatal编程技术网

sqlite:在查询一对多数据库时避免全表扫描

sqlite:在查询一对多数据库时避免全表扫描,sqlite,Sqlite,假设数据库中有两个表: user: --------------- | name | id | |-------|-----| | foo | 1 | | bar | 2 | --------------- comments: ------------------ | comment | id | |-----------------| | comment 1 | 1 | | comment 2 | 1 | | comment 3 | 1 | | com

假设数据库中有两个表:

user:
---------------
|  name | id  |
|-------|-----|
|  foo  |  1  |
|  bar  |  2  |
---------------

comments:
 ------------------
|  comment  |  id |
|-----------------|
| comment 1 |  1  |
| comment 2 |  1  |
| comment 3 |  1  |
| comment 4 |  1  |
| comment 5 |  1  |
| comment 1 |  2  |
 ------------------
让我们说我想调出
foo
的所有评论,这样我的查询就会

从注释c、用户u中选择c.comment,其中u.name='foo'和c.id=u.id


上面的查询是否会对comments表进行完整的表扫描,以获取用户
foo
的评论,或者是否有更好的查询来优化此操作并避免完整的表查找?我应该为这些表创建索引吗?

您必须在表注释中添加注释/Id索引,以优化查询速度

但这取决于数据量或未来预期的数据量。有时,在一个永远不会增长的小表中,您永远不需要索引。 这取决于您对表的使用和演变的思考

因此,“我应该创造…”:这取决于!
尽量避免逗号分隔的连接!您认为SQLite为什么要进行完整的表查找?你检查执行计划了吗?尽管使用显式的
连接
操作符不会(或不应该)改变性能,但它的编码风格比在
where
子句中使用过时的隐式连接要好。