Sql 从单个表中选择查询中的性能问题
我有一张如下的桌子Sql 从单个表中选择查询中的性能问题,sql,select,sybase,query-optimization,Sql,Select,Sybase,Query Optimization,我有一张如下的桌子 dbo.UserLogs ------------------------------------- Id | UserId |Date | Name| P1 | Dirty ------------------------------------- 每个用户ID可以有多条记录[即使以百万计] 我在日期列上建立了聚集索引,并在时间范围内频繁地查询该表。 列“Dirty”不可为null,只能取0或1,因此我对“Dirty”没有索引 我在这个表中有数百万条记录,在我的应用程序
dbo.UserLogs
-------------------------------------
Id | UserId |Date | Name| P1 | Dirty
-------------------------------------
每个用户ID可以有多条记录[即使以百万计]
我在日期列上建立了聚集索引,并在时间范围内频繁地查询该表。
列“Dirty”不可为null,只能取0或1,因此我对“Dirty”没有索引
我在这个表中有数百万条记录,在我的应用程序中的一个特殊情况下,我需要查询这个表,以获取至少有一条记录被标记为dirty的所有UserId
我尝试了这个查询-从UserLogs中选择distinct(UserId),其中Dirty=1
我总共有1000万条记录,这需要10分钟的时间来运行,我希望这个运行速度比这个快得多
[我可以在不到一分钟的时间内查询此表的日期列。]
欢迎提出任何意见/建议
我的环境
64位、sybase15.0.3、Linux我的建议是,通过在适当的时间间隔内将日志条目“归档”到归档表中,减少需要查询的数据量
如果对当前和存档的日志数据提供联合视图,则仍然可以访问所有条目,但访问当前日志的次数将大大减少。添加一个包含UserId和Dirty字段的索引。在索引中脏之前使用用户ID,因为它有更多的唯一值。谢谢你的建议。我之前考虑过这个问题,但是ATM我正在查看其他可能的选项。