Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Milton Júnior

Desempenho no acesso ao banco.

Recommended Posts

Olá pessoal, dessa vez não estou precisando de ajuda mas de exclarecimento!é o seguinte, eu tenho um script que dá 3 selects na mesma tabela.ex.:$sql1 = mysql_query("select * from tabprodutos");//pega todos os produtos$sql2 = mysql_query("select distinct(marca) from tabprodutos");//pega as marcas dos produtos sem repeti-las$sql3 = mysql_query("select distinct(modelo) from tabprodutos");//pega os modelos dos produtos sem repeti-los.Daí eu fiz outro script que usa somente o primeiro select e os dois ultimos eu substitui com arrays, foreach e tal, e tá funcionando perfeitamente como o script anterior.Agora vem a pergunta, será que o segundo script oferece alguma vantagem em relação ao primeiro se tratando de desempenho no acesso ao banco? tendo em vista que o site vai ser usado por dezenas ou quem sabe centenas de usuários, meu sistema pode ter algum ganho significativo se eu usar o segundo script no lugar do primeiro ou tanto faz qualquer um dos dois?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo você precisa dainformação soh da marca entaum???Nesse caso eu acho que você fazer uma diferença, mas diferença de memoria, que na parte de desempenho de processamento acho que os dois vaum ter o mesmo desempenho pois vao rodar todas linhas da tabelas, acho que vai ter soh de memoria, pois a array pra guarda todos valores vai ser maior que a pra guarda soh as marcas...Agora se eu etiver falando besteira alguem me corrija ai....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa pessoal, pode ser que seja difícil de responder a pergunta mas não acredito que seja difícil de entende-la. Postem algum comentário por favor, pois estou dependendo desta dúvida pra terminar meu trabalho!Pra facilitar mais, vou tentar traduzir a dúvida:o que eu quero saber é se no mesmo script, se eu usar mais de um select(no meu caso são 3 selects) na mesma tabela, corre algum risco que sobrecarga, travamento do banco ou algo assim, pois como se trata de uma pagina de busca, ela pode ser acessada por uma porrada de usuários ao mesmo tempo. Então estou com medo de acontecer algum problema com a tabela ou com o banco por causa dos selects.Aguardo ajuda!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora eu entendi oke você queria, travar eu acho muito mas muito dificil de acontecer, mas eh claro que 3 selects usa mais doke 1 select, pois nos 3 você vai rodar 3 vezes as consultas na mesma tabela, dependendo da quantidade de registros que você tiver ele vai demorar mais pra lhe fazer a consulta.

 

Como parece que eh uma consulta que você vem de outra página, onde você escolhe se quer listar tudo, ou soh as marcas ou soh os modelos, logo apos o select você pode colocar a variavel, tipo esse exemplo meu:

 

PHP

[*]

[*]// essa variavel ou ela vem com o nome do campo desejado ou *

[*]// se o cara escolher na outra página marcas ela vem com avlor MARCA

[*]// e assim vai

[*]$consulta = $_POST[consulta];

[*]

[*]sql = mysql_query("SELECT '$consulta' FROM tabprodutos");

[*]

Compartilhar este post


Link para o post
Compartilhar em outros sites

wolf vê só, eu penso o mesmo que você, só q tem uma coisa q eu não exclareci:o 1° select eu preciso q ele seja com * mesmo por ele é quem vai mostrar os registros da consulta, só q os outros dois não entram na consulta, eles servem pra preencher dois listmenu q tem na pagina da consulta pra q o usuário possa continuar paesquisando sem sair da pagina. por isso eu coloquei os outros dois selects, "select distinct(marca)" e "select distinct(modelo)". daí o q eu fiz... $sql = mysql_query("select * from produtos");//esse mostra a consultawhile ($reg = mysql_fetch_array($sql)){$marcas[] = $reg["marca"];$modelos[] = $reg["modelo"];}$listamarcas = array_unique($marcas);$listamodelos = array_unique($modelos);sort($listamarcas);sort($listamodelos);...aí nos listmenus é onde eu tava justamente dando os outros dois selects eu substitui pelo arrays:<select name="selectmarca" id="selectmarca" class="select"><option value="TODAS" selected>TODAS</option><?foreach ($listamarcas as $marca){echo "<option value='$marca'>$marca</option>";}?></select><select name="selectmodelo" id="selectmodelo" class="select"><option value="TODOS" selected>TODOS</option><?foreach ($listamodelos as $modelo){echo "<option value='$modelo'>$modelo</option>";}?></select>Pronto, era isso que eu queria saber, se desse jeito eu ganho mais velocidade ou desempenho do que se eu usasse 3 selects! o que você me diz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que invez de você fazer esses outros dois selects você poderia guardar em uma array as marcas e os modelos em outra array, partindo da select que tem *, na hora que você manda contar os registros ele jah monta essas duas arrays pra você, e na hora de montar o negocio você utiliza essas arrays.Isso ajudaria no desempenho, mas se essa sua tabela naum tiver muitos registros, essas 3 consultas vaum ser insignificantes...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ô wolf, acho que tu nao viu direito meu ultimo post. Eu já tinha feito justamente o que tu tá dizendo, substitui os outros selects usando somente o select * e preenchendo dois arrays! por garantia, acho q vou usar este método mesmo, pois acredito q minha tabelas chegue a ter mais de mil registros e afinal de contas os arrays são só pra preencher dois listmenus, eles nao entra na consulta.Agradeço a atenção q tu me deu, se precisar de alguma coisa q teja ao meu alcance, é só postar!Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.