【问题标题】:I have a table which has a primary key that is made of three columns. How do I index this table?我有一个表,它的主键由三列组成。我如何索引这个表?
【发布时间】:2017-02-18 21:18:52
【问题描述】:

投注站的功能是这样的:每周有两轮,在每一轮中,当有人想要开票时,他会得到该轮的号码(第一轮的票(1),第二轮的(2).. .)。我有一个投注公司所有输入的票的票表。

此表有 30 列,包含每张工单的所有详细信息。主键是 (location, round, number) 我把这个数字解释为该轮中的彩票号码,而 location 是投注站的位置(一家博彩公司在不同的位置有许多投注站) .我想一一选择每张票,但我不知道如何有某种组织方式。如果单列具有自动增量整数类型,那将很容易。我只是想知道如何索引这个三元组主键以通过循环逐步选择每个条目。我正在使用 C# 来执行此操作?

【问题讨论】:

  • 这部分我不太清楚The problem is that the primary key is made up of a triplet (number, round, bethouse). I want to somehow index this table to take the entries (using a select * from ticket..) one by one in some loop, using this index能不能详细点
  • 你使用select * . . .。 SQL 引擎决定索引是否适合查询。
  • 请更详细地描述问题,最好举个例子。

标签: c# sql postgresql


【解决方案1】:

由于您没有提供任务的真正目的,我可以想到两种情况。

首先,您希望分批读取表格以进行处理/评估。在这种情况下,您必须确保表是不可变的并运行SELECT ... ORDER BY number, round, bethouse OFFSET 0 LIMIT 1000OFFSET 1000 LIMIT 1000OFFSET 2000 LIMIT 1000 等等,直到到达最后一行。

其次,您要处理新传入的行。在这种情况下,您无法仅使用多列 PK 来解决该问题。您必须添加具有自动增量值的列或日期列(即创建行的时间)。然后按此列对结果进行排序,并使用WHERE mycolumn > {LastReadValue} 观察新行。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2011-12-22
    • 1970-01-01
    • 2021-11-21
    • 2022-08-18
    • 1970-01-01
    • 2016-10-14
    • 2021-09-11
    • 1970-01-01
    • 2019-11-13
    相关资源
    最近更新 更多