3l3tr1c 1 Denunciar post Postado Fevereiro 18, 2012 Olá! Imaginem a seguinte hipótese: Em uma tabela típica para registro de usuários em um sistema tenho cerca de cadastro 1500 cadastro. Em uma rotina preciso "chamar" esses cadastros e imprimí-los em um Menu de Salto, para facilitar a vida do operador do sistema, que será o responsável por procurar na lista do Menu de Salto o usuário adequado, preciso montar a lista em ordem alfabética. Mas, imaginem que essa rotina seja chamada por 39 operadores ao mesmo tempo. Seria dispendioso para o servidor ter que organizar, a partir de programação PHP, a lista em ordem alfabética toda vez que o script fosse rodado. Em php faria: $sql = mysql_query("SELECT * tabela_1 ASC ..."). Pois bem, não existe uma forma de organizar os registro em ordem alfabética AUTOMATICAMENTE SEMPRE QUE ESSES FOREM INSERIDOS? Não existe um comando em MySQL que sempre que for inserido um novo registro ele automaticamente indexe por ordem alfabética? Obrigado aos que ajudarem! Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 18, 2012 order-by Compartilhar este post Link para o post Compartilhar em outros sites
3l3tr1c 1 Denunciar post Postado Fevereiro 18, 2012 order-by Looool! Eu sei disso, mas obrigado. Eu falo em implementar uma rotina que faça isso no banco de dados para que na consulta nao precise ficar reordenando, entende? Eu acho que essas ordenações "nas consultas" gera um esforço dispensável para os servidores. Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Fevereiro 19, 2012 Não tem como fazer isso, motivo: Quando você insere uma linha, ela obtém uma posição por sí própriaFísica simples: Um objeto não pode ser colocado no mesmo lugar que o outro Para você fazer isso, tem uma solução, porém você gasta muito mais fazendo o seguinte: crie uma tabela idêntica a que será re-indexada, crie um INSERT com SELECT nessa tabela, movendo tudo da tabela que você deseja re-indexar, para esta nova, depois crie outro INSERT com SELECT nessa outra tabela, porém ordenando e inserindo novamente na tabela que será re-indexada. Eu continuaria usando o ORDER BY, os gastos são bem menores !, Boa Sorte, Abraços ! Compartilhar este post Link para o post Compartilhar em outros sites
3l3tr1c 1 Denunciar post Postado Fevereiro 19, 2012 Não tem como fazer isso, motivo: Quando você insere uma linha, ela obtém uma posição por sí própriaFísica simples: Um objeto não pode ser colocado no mesmo lugar que o outro Para você fazer isso, tem uma solução, porém você gasta muito mais fazendo o seguinte: crie uma tabela idêntica a que será re-indexada, crie um INSERT com SELECT nessa tabela, movendo tudo da tabela que você deseja re-indexar, para esta nova, depois crie outro INSERT com SELECT nessa outra tabela, porém ordenando e inserindo novamente na tabela que será re-indexada. Eu continuaria usando o ORDER BY, os gastos são bem menores !, Boa Sorte, Abraços ! Entendo. Mas será que os gastos são menores mesmo? O que temo é que o sistema fique lento, tendo em vista que vários usuários irão ter acesso a ele. Uma vez uma profa de programação nos disse que havia a possibilidade de implementar rotinas na base de dados, por isso pensei nisso. Sabe o "sort" na exibição da tabela? Eu falo daquilo, ao invés de organizar por número de ID, seria por ordem alfabética. Mas valeu! Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Fevereiro 19, 2012 Sim, os gastos são menores e acredite, o resultado só é ordenado depois que todos os dados são recuperados, portanto, você deve analisar suas expressões SQL e tentar filtrar o máximo de dados quando possível, indexar corretamente a tabela e claro, pensar em uma boa modelagem ! Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
3l3tr1c 1 Denunciar post Postado Fevereiro 19, 2012 Não tem como fazer isso, motivo: Quando você insere uma linha, ela obtém uma posição por sí própriaFísica simples: Um objeto não pode ser colocado no mesmo lugar que o outro Para você fazer isso, tem uma solução, porém você gasta muito mais fazendo o seguinte: crie uma tabela idêntica a que será re-indexada, crie um INSERT com SELECT nessa tabela, movendo tudo da tabela que você deseja re-indexar, para esta nova, depois crie outro INSERT com SELECT nessa outra tabela, porém ordenando e inserindo novamente na tabela que será re-indexada. Eu continuaria usando o ORDER BY, os gastos são bem menores !, Boa Sorte, Abraços ! Entendo. Mas será que os gastos são menores mesmo? O que temo é que o sistema fique lento, tendo em vista que vários usuários irão ter acesso a ele. Uma vez uma profa de programação nos disse que havia a possibilidade de implementar rotinas na base de dados, por isso pensei nisso. Sabe o "sort" na exibição da tabela? Eu falo daquilo, ao invés de organizar por número de ID, seria por ordem alfabética. Mas valeu! Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 19, 2012 Bancos de Dados não são arquivos sequencias. Índices existem para ordenação. Compartilhar este post Link para o post Compartilhar em outros sites
3l3tr1c 1 Denunciar post Postado Fevereiro 19, 2012 Sinceramente, obrigado. Dou por encerrada as dúvidas. [RESOLVIDO] Compartilhar este post Link para o post Compartilhar em outros sites