Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá. Estou com umas dúvidas bobas aqui, sobre assuntos simples, super simples. Em vários casos, há várias formas de se obter o resultado esperado, aí eu quero saber de vocês, qual a melhor para cada situação, levando em conta a perfomance. Vamos lá:
1. Contar quantidade de valores em uma tabela
$query = mysql_query("SELECT count(*) FROM tabela");
echo mysql_result($query, 0);
ou
$query = mysql_query("SELECT * FROM tabela");
echo mysql_num_rows($query);
2. Query usando dados de duas tabelas
SELECT nome FROM tabela1 WHERE uid = tabela2.uid
ou
SELECT nome FROM tabela1 WHERE uid = (SELECT uid FROM tabela2)
3. Juntar strings fixas e variáveis
$a1 = "Abc";
$a2 = "Xyz";
$a3 = sprintf("Primeiras: %s - Últimas: %s", $a1, $a2);
ou
$a1 = "Abc";
$a2 = "Xyz";
$a3 = "Primeiras: $a1 - Últimas: $a2";
ou
$a1 = "Abc";
$a2 = "Xyz";
$a3 = "Primeiras: ".$a1." - Últimas: ".$a2;
Como disse, são dúvidas realmente bobas, é só pra tirar da cabeça a preocupação de estar fazendo algo da pior forma :)
Até mais.
Do que tu falou, só entendi a parte do terceiro caso lá, kkk.
Eu também prefiro concatenação, e segundo uns testes meus aqui, é o método mais rápido. Só fiquei em dúvida depois de ver muitos códigos usando sprintf() '-'
E nesse caso, qual seria o melhor?
4. Imprimir chaves de array
$array = array(
"A"=>"algo",
"B"=>"xyz",
"C"=>"tal"
);
foreach($array as $key=>$value) {
echo $key.PHP_EOL;
}
ou
$array = array(
"A"=>"algo",
"B"=>"xyz",
"C"=>"tal"
);
foreach(array_keys($array) as $key) {
echo $key.PHP_EOL;
}
Num teste que eu fiz, o segundo método foi mais lento apenas na primeira execução, nas demais ele foi o mais rápido, aí fiquei confuso. Essa diferença de tempo da primeira vez para as demais pode ter sido devido a algum cache? Qual seria a forma mais "semântica" aí?
Até mais.
Idem ao post #2 com alguns detalhamentos
Questão 1, ao invés de COUNT(*), geralmente coloco COUNT(id) onde id é a coluna da chave primária.
Também recomendam COUNT(1)
Questão 2, depende do caso.
se não necessitar selecionar colunas da outra tabela e caso não necessite de jogar para esquerda (left join) ou direita (right join), então um simples subselect é suficiente.
Questão 3, a terceira opção
$a3 = "Primeiras: ".$a1." - Últimas: ".$a2;
mas prefiro single quote e padronizar com espaços nas concatenações
$a3 = 'Primeiras: ' . $a1 . ' - Últimas: ' . $a2;
todavia, dependendo do caso, o uso de sprintf() ajuda muito.
Para concatenações ordinárias, faça diretamente.
No primeiro caso, você deve usar o count(*) se pode evitar de selecionar a tabela toda para ser menos estressante para o banco, no seugndo caso eu aconselharia o uso do INNER JOIN, no terceiro caso eu aconcelharia a concatenação sempre que possivel