【问题标题】:SQLite INDEXES in System.Data.SQLite vb.netSystem.Data.SQLite vb.net 中的 SQLite 索引
【发布时间】:2014-01-13 03:56:19
【问题描述】:

这是我第一次使用 SQLite - INDEXES。我有一个包含 100 万条记录的大型数据库。我读到使用索引更快,但我觉得没有区别。这是我遵循的步骤。

  1. 使用“SQLite Administrator”工具为表 AllData(FileTitle、FileAuthor、FileLanguage、PublicationYear、Publisher、FileType、ISBN、Description、FileURL、FilePath、CatID、FileMD5)创建索引。

  2. 在创建索引时,我选择了所有要编入索引的列。它将数据库的大小从 450 MB 增加到 1.27 GB

  3. 我使用“Select * From ALLData Where CattID='5' Limit 25000”语句获取结果。

但我发现索引后速度没有差异。我读到执行查询时没有什么特别的事情要做,因为 SQLite 引擎自动使用索引。但我发现速度没有差异。

请指导我哪里错了。

【问题讨论】:

    标签: sql database vb.net sqlite


    【解决方案1】:

    您的where 子句使用CatId 字段。这需要是索引中的第一列:AllData(CatId, FileTitle, FileAuthor, FileLanguage, PublicationYear, Publisher, FileType, ISBN, Description, FileURL, FilePath, FileMD5)

    【讨论】:

    • 但我不只是从 CatId 搜索。大多数时候我从 FileTitle、CatId 和 FileAuthor 中搜索。我必须做些什么才能让我的查询更快?
    • @user934820 。 . .您必须为不同的查询创建单独的索引。
    • 叫我笨蛋,但请你指导我学习任何教程吗?
    • @user934820 。 . . MySQL 实际上在文档中有很好的描述 (dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html)。
    • 谢谢,我知道了。是的,现在它很快。但是在执行“SELECT * FROM Alldata where FileTitle MATCH 'text here' limit 20000”时会产生一个 sql 逻辑错误。我哪里错了?
    【解决方案2】:

    您也应该阅读 Bill Karwin 的这个出色的答案:finding the optimal order of multi-column index 它真的很容易理解和应用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2020-01-24
      相关资源
      最近更新 更多