pujitan978 2022-12-22 19:01 采纳率: 28.6%
浏览 41
已结题

无序多字段的检索该如何建索引

怎样判断哪些检索条件作为索引,如下表 code 到 lable 10个字段都可以单独或者组合检索.
这个表的数据有几十亿, 每个字段单独索引插入会慢, 而且10个索引也占用很大空间, 单独索引各种条件检索是最快的.
测试过建一个联合索引,因为检索的无序性,有些条件的检索会非常慢.
请教该如何建立索引呢?

表: table_waves
字段:   code     name  team   order   machine   pos   addres   operator    problem   lable   value1   value2   value3  ..............


  • 写回答

4条回答 默认 最新

  • 生产队的小刘 Python领域新星创作者 2022-12-22 19:43
    关注
    获得2.10元问题酬金

    首先,我们需要分析哪些检索条件需要单独建立索引。

    首先,我们可以考虑那些字段会被频繁使用作为检索条件,这些字段可以单独建立索引。比如code、name、team等字段。

    其次,我们还可以考虑哪些字段经常需要组合使用作为检索条件,这些字段也可以单独建立索引。比如order、machine、pos等字段。

    最后,我们还可以考虑哪些字段在检索过程中有序性很重要,这些字段也可以单独建立索引。比如addres、operator、problem等字段。

    在建立索引时,我们可以使用Java的JDBC API,在SQL语句中指定要建立索引的字段。比如下面的例子:

    CREATE INDEX code_index ON table_waves (code);
    

    这样,我们就可以在检索时使用code字段进行快速查询。

    另外,如果表中有几十亿条数据,我们还可以考虑使用分区表的方式来优化检索速度。比如我们可以将表按照时间范围进行分区,这样在检索某一时间段内的数据时就可以更快速。

    总之,我们需要根据需要检索的条件进行分析,并结合表中数据量的大小,来决定哪些字段需要建立索引以提高检索速度。

    需要注意的是,建立索引会增加插入数据的时间,并且索引也会占用一定的空间。所以,我们在建立索引时,需要仔细权衡利弊,以选择合适的索引方式。

    最后,对于联合索引,我们可以根据需要组合使用的字段来建立联合索引。比如我们希望使用code、name、team这三个字段组合作为检索条件,可以使用下面的SQL语句来建立联合索引:

    CREATE INDEX code_name_team_index ON table_waves (code, name, team);
    

    这样,我们就可以使用这三个字段的组合进行快速查询。但是,需要注意的是,联合索引在检索时需要按照索引的顺序使用这些字段。如果检索时使用的顺序与索引的顺序不一致,可能会造成检索速度的降低。所以,在使用联合索引时,我们需要注意这点。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 创建了问题 12月22日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备