我以前从未创建过索引,但是我认为这可能会有所帮助。我有一个大约SAS数据集。 700万条记录。它是员工条目及其各自时间戳的列表。我要确定同一用户在同一天是否有任何后续条目,然后注意时间戳。 数据集(条目)为3列:Storage_ID,User_ID和EventTimestamp。 我想也许在Stoarge_ID和User_ID上的索引将有助于加快进度。 如果他们有帮助,我将如何/在何处创建索引?
PROC SQL;
CREATE TABLE sub_ENTRIES AS
SELECT A.*,
(SELECT
MIN(B.EVENTTIMESTAMP)
FROM
ENTRIES B
WHERE
A.STORAGE_ID=B.STORAGE_ID
AND A.USER_ID=B.USER_ID
AND DATEPART(A.EVENTTIMESTAMP)=DATEPART(B.EVENTTIMESTAMP)
AND B.EVENTTIMESTAMP > A.EVENTTIMESTAMP
) AS NEXT_ACCESS FORMAT=DATETIME27.6
FROM
ENTRIES A
;
答案 0 :(得分:1)
您可以使用SQL创建一个复合索引(两列或更多列)。
例如:
Proc SQL;
create index STORAGE_USER on ENTRIES (storage_id, user_id);
用于n
列的索引键的常规语法是:
create index <index-name>
on <table-name>
( <column-name-1>,
<column-name-2>,
…
<column-name-<n>>
)
当查询选择或联接条件涉及组合键的所有列时,索引最有效/适用。使用OPTION MSGLEVEL=I
来使用SAS日志索引。