Numeros randomicos Diferentes

estou tentando fazer uma lógica para sortear 10 números em uma determinada faixa defenida em uma consulta SQL, porém todos devem ser diferentes.
tentei a seguinte lógica:

// realiza a pesquisa no banco de dados para obter
// todas as questões pertinentes a um determinado tema e curso

    PreparedStatement sql = conexao.prepareStatement("SELECT * FROM tb_questoes WHERE cd_tema = ? AND cd_curso = ? AND ativa = 'Sim';");
    sql.setString(1,tema);
    sql.setString(2,curso);
    ResultSet resultquestoes = sql.executeQuery();

// obtem o número de questoes selcionadas

    resultquestoes.last();
    int total = resultquestoes.getRow();

    int[] perguntas = new int[10];
    int random = 0;
    boolean sorteia = true;

// lógica para sortear os números
// e verificar se já foram sorteados

    for (int i = 0; i < 10;i++){
        do{
            random = 1 + (int)(Math.random() * total);
            for(int j = 0; j <= i; j++){
                if(perguntas[j] == random)
                    sorteia = false;
            }
        } while (sorteia);
        perguntas[i] = random;
    }

beleza não tem nenhum erro ai porém ele demora para sortear queria saber alguma forma de limpar mais esse código e deixá-lo mais leve e rápido.

vlw.

http://www.guj.com.br/java.tutorial.artigo.17.1.guj