nknk 3 Denunciar post Postado Setembro 25, 2008 O que seria melhor para uma busca, eu criar tabelas especificas para cada letra do alfabeto ou manter em uma tabela só? Por exemplo: 100.000 funcionários cadastrados. É mais eficiente ter uma tabela para registrar os funcionários com a letra A, B e assim sucessivamente? Compartilhar este post Link para o post Compartilhar em outros sites
Kimura 0 Denunciar post Postado Setembro 25, 2008 Olá, Caro nknk, Isso depende do banco de dados, imagino até que o pessoal do fórum SQL, Oracle etc., consiga responder com maior eficiência. Lembrando também que a estrutura das suas tabelas terão muitas responsabilidades, se você usa MyISAM ou InnoDB. Sucesso. Editando: Minha opinião: acho que não é preciso criar uma tabela pra cada um, você poderá fazer na mesma, deste que a faça bem elaborada. Compartilhar este post Link para o post Compartilhar em outros sites
luciano antony 0 Denunciar post Postado Setembro 25, 2008 Não. Basta você somente criar uma tabela para funcionario. Quanto sua busca basta você somente detalhar a mesma. Ex: Select * from funcionario where=""; e ai vai LIKE............. ABRAÇOS Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Setembro 25, 2008 Qual gerenciador você usa ? MySQL ? Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Setembro 25, 2008 Então, seria com Mysql. Pq não conheço os outros banco de dados. E geralmente faço tabelas com Myisam não sei para que serve InnoBD Mas o que seria uma tabela bem estruturada e uma mal estruturada ? Vou dar um exemplo mais ou menos: Vamos supor que eu tenha que cadastrar entre 100.000 a 1.000.000, como uma comunidade do orkut, uolk. Com os seguintes dados Id (auto increment), Nome, Sobrenome, data de nascimento, obs, ip, data, hora, cidade, estado. Para uma tabela deste tamanho eu deveria criar uma tabela para cada letra? Imagino que seria mais eficiente, por exemplo na hora de fazer a consulta primeiro eu quebraria o nome da pessoa, pegaria a primeira letra e faria a consulta assim quebra[0] seria A ou B ... ou Y $tabela = "profiles_".$quebra[0]; $primeira_letra = $quebra[0]; SELECT nome,id,obs FROM $tabela WHERE nome LIKE $primeira_letra% ORDER BY id DESC Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Setembro 27, 2008 Alguem sabe? Compartilhar este post Link para o post Compartilhar em outros sites
Oenning 0 Denunciar post Postado Setembro 27, 2008 Em se tratando de performance, acho que você teria um grande ganho, mas veja o outro lado da moeda. Imagina que agora você tem a tabela ComunidadesProfiles onde você tem: ID (auto_increment) id_comunidade (referenciando a tabela de comunidades) id_profice (id de um usuário, que tabela você iria referencia aqui? todas as profile_A, profile_B, profile_C??) Usando o mesmo exemplo acima, se você quiser pegar o nome de todos os profiles que estão na comunidade de código 2, como você faria? INNER JOIN com todas as tabelas? Bom, na minha opinião temos mais contras do que prós, eu ficaria com apenas uma tabela. Trabalho com MSSQL e temos tabelas com bilhões de registros, uma consula simples, sem joins e utilizando um criterio WHERE leva poucos segundos. Mas isso acontece porque temos índices eficazes e um bom hardware no servidor do bd. Att, Guilherme Oenning. Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Setembro 27, 2008 Neste caso da comunidade ficaria cheia a consulta. Acho que esta separação em tabelas seria bom para uma consultas que não requeressem interligação entre estas belas. Vou optar por não separar. Compartilhar este post Link para o post Compartilhar em outros sites
Jorge GOMES 0 Denunciar post Postado Outubro 10, 2008 As informações acima não são exatas! Primeiro evite ao máximo utilizar LIKE%...%. Elas São muito lentas. Use um match against, são 600 vezes mais rápidas. Em sites de grande movimentação e grande base de dados como no qual eu trabalho onde a base de dados pesa 4Gigas, a replicação éuma alternativa interessante seguida de um split por ordem alfabética. Outro conselho você pode utilizar um método como Sphinx ou Lucene(para este você pode usar a biblioteca do zend framework), para a agilizar a busca. Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Outubro 11, 2008 Eu não conheço match against e replicação, mas darei uma olhada. Compartilhar este post Link para o post Compartilhar em outros sites