如何为cte创建索引

时间:2016-07-20 10:11:06

标签: sql sql-server sql-server-2005

我有一个问题:

<?php 

function copy_files3($requested, $src_path, $send_path){
//function copy_files renames and copies pdf-files to a specific folder. 
//ARRAY $requested (keys INT), (names STR) holds the names of the selected files
//STR $src_path is the full path to the requested files
//STR $send_path is the full path to the re-named files
//ARRAY $target_file holds the names of the renamed files
    $i=0;
    $target_file = array();
    $src_filename = array();
    $b=array();
    foreach($requested as $value) {
        //$value holds the names of the selected files. 
        //1 Expand to get the full path to the source file
        //2 Generate a 10 char + .pdf (aka 14 char) long new file name for the file.
        //3 Generate full path to the new file.
        $src_filename[$i] = $src_path.$value;
        $rnam[$i] = randomstring(); //function randomstring returns a 10 char long random string
        $target_file[$i] = $send_path.$rnam[$i].'.pdf';
        echo 'target_file['.$i.'] = '.$target_file[$i].'<br>';
        copy($src_filename[$i],$target_file[$i]);
        $i++;
    }
    return($target_file);
} 

$returnedValue = copy_files3($requested, $src_path, $send_path);
?>

我可以为此cte创建索引吗?

我正在使用ms SQL Server 2005

感谢。

2 个答案:

答案 0 :(得分:2)

如上所述,索引无法添加到CTE中。

但是,在CTE选择中,在连接的字段上添加ORDER BY子句可以减少执行时间。

您还需要添加SELECT TOP 100 PERCENT以允许CTE选择中的ORDER BY。

答案 1 :(得分:1)

您可以考虑使用物化/索引视图作为underlyer而不是CTE。它需要您提前创建DDL,但如果查询性能很重要,那么它可能是一个帮助。 另外,请记住,由于架构绑定要求,您将无法更改基础表。