sql - 来自单个表的选择查询中的性能问题

标签 sql select sybase query-optimization

我有如下表格

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/

相关文章:

sql - 在特定行的值之后拆分表

python - Mysql - 如何在比较两个条目时仅识别和选择不同的列?

sql - 从单个表中两次选择同一列但条件不同

php - 无法在 Ubuntu 上使用 PHP 和 ODBC 连接到 SQL Anywhere 12

java - 什么是关于数据库和 JNDI 的 validationQuery?

sql - REGEXP_REPLACE 不会发生连续模式替换

提交 15 天后 php 更新帖子状态

sql - Doctrine ORM - 自连接,没有任何实际关系

mysql - 如果主键与第三个表匹配并按第三个表排序,我将如何连接两个表?

asp.net-core - 如何从.net core连接Sybase数据库