我有如下表格
dbo.UserLogs
-------------------------------------
Id | UserId |Date | Name| P1 | Dirty
-------------------------------------
每个userId可以有多条记录[甚至以百万计]
我在日期列上有聚簇索引,并且在时间范围内非常频繁地查询该表。 “脏”列不可为 null,只能取 0 或 1,因此我在“脏”上没有索引
我在这个表中有几百万条记录,在我的应用程序的一个特定情况下,我需要查询这个表以获取所有至少有一个标记为脏的记录的 UserId。
我试过这个查询 - 从 Dirty=1 的 UserLogs 中选择 distinct(UserId)
我总共有 1000 万条记录,这需要大约 10 分钟才能运行,我希望它运行得比这快得多。
[我能够在不到一分钟的时间内在日期列上查询此表。]
欢迎提出任何意见/建议。
我的环境 64位,sybase15.0.3,Linux
最佳答案
我的建议是通过以适当的时间间隔将日志条目“归档”到归档表来减少需要查询的数据量。
如果您提供当前和存档日志数据的联合 View ,您仍然可以访问所有条目,但访问当前日志的次数会大大减少。
关于sql - 来自单个表的选择查询中的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2452644/