Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从单个表中选择查询中的性能问题_Sql_Select_Sybase_Query Optimization - Fatal编程技术网

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我正在查看其他可能的选项。