War*_*blr 14 sqlite indexing indices
我最近开始在sqlite中探索索引.我能够使用我想要的列成功创建索引.
执行此操作后,我查看数据库,看看索引是否成功创建,只是发现sqlite已经为我的每个表自动创建了索引:"sqlite_autoindex_tablename_1"
这些自动生成的索引使用每个表的两列,这两列构成了我的复合主键.在使用复合主键时,这对sqlite来说是否正常?
由于我将基于这两列完成大部分查询,因此手动创建索引是否有意义,这是完全相同的事情?
索引新手非常感谢任何支持/反馈/提示等 - 谢谢!
Lar*_*tig 21
SQLite需要一个索引来强制执行PRIMARY KEY约束 - 没有索引,随着表的大小增加,强制约束会显着减慢.约束和索引不相同,但我不知道任何关系数据库不会自动创建索引来强制执行主键.所以是的,这是任何关系数据库的正常行为.
如果创建索引的目的是优化搜索,其中您有一个涉及索引中第一列的可索引搜索项,那么就没有理由在列上创建其他索引 - SQLite将使用自动创建的索引.
如果您的搜索涉及索引中的第二列而不包含第一列的可索引术语,则需要创建索引.当搜索中未指定索引的头列时,SQLite(或我所知的任何其他关系数据库)都不能使用复合索引来优化过滤.
| 归档时间: |
|
| 查看次数: |
8087 次 |
| 最近记录: |