SQL在数据库中工作,但在php中超时
我用这个进行测试:
$sql_teste = "SELECT COUNT(*) FROM $tbl_membro";
$result_teste = mysql_query($sql_teste);
$ln_teste = mysql_fetch_array($result_teste);
print_r("start " . $ln_teste[0] . " end");
die();
结果是:
开始 90 结束
然后我尝试了这个:
SELECT profissao_nome, nome, contratacao_tipo_nome, codigo,
cidade_nome, estado_sigla, pais_nome, data,
postagem_descricao, membro_avatar, membro_foto, membro_foto_selecionada
FROM (
SELECT prof.nome as profissao_nome, e.razao_social as nome, ct.nome as contratacao_tipo_nome, v.codigo as codigo,
c.nome as cidade_nome, est.sigla as estado_sigla, p.nome as pais_nome, v.data_ultima_alteracao as data,
v.descricao as postagem_descricao, '' as membro_avatar, '' as membro_foto, '' as membro_foto_selecionada
FROM $tbl_vaga v
JOIN $tbl_empresa e ON v.codigo_empresa = e.codigo
JOIN $tbl_contratacao_tipo ct ON ct.codigo = v.codigo_contratacao_tipo
JOIN $tbl_endereco ende ON ende.codigo = v.codigo_endereco
LEFT JOIN $tbl_cidade c ON c.codigo = ende.codigo_cidade
LEFT JOIN $tbl_estado est ON est.codigo = c.codigo_estado
JOIN $tbl_pais p ON p.codigo = ende.codigo_pais
JOIN $tbl_profissao prof ON prof.codigo = v.codigo_profissao
UNION
SELECT '' as profissao_nome, CONCAT(u.nome,' ',u.sobrenome) as nome, '' as contratacao_tipo_nome, p.codigo as codigo,
'' as cidade_nome, '' as estado_sigla, '' as pais_nome, p.data_postagem as data,
p.descricao as postagem_descricao, m.avatar as membro_avatar, m.foto as membro_foto, m.foto_selecionada as membro_foto_selecionada
FROM $tbl_postagem p
JOIN $tbl_membro m ON m.codigo = p.codigo_membro
JOIN $tbl_usuario u ON u.codigo_membro = m.codigo
) as tab ORDER BY data DESC LIMIT 0,5
结果是空的。
当我输入:
print_r($sql_teste);并将代码放入我的数据库中,我得到了正确的结果
显示第 0 - 4 行(总共 5 行,查询耗时 0.0067 秒)
print_r:
SELECT profissao_nome, nome, contratacao_tipo_nome, codigo,
cidade_nome, estado_sigla, pais_nome, data,
postagem_descricao, membro_avatar, membro_foto, membro_foto_selecionada
FROM (
SELECT prof.nome as profissao_nome, e.razao_social as nome, ct.nome as contratacao_tipo_nome, v.codigo as codigo,
c.nome as cidade_nome, est.sigla as estado_sigla, p.nome as pais_nome, v.data_ultima_alteracao as data,
v.descricao as postagem_descricao, '' as membro_avatar, '' as membro_foto, '' as membro_foto_selecionada
FROM vaga v
JOIN empresa e ON v.codigo_empresa = e.codigo
JOIN contratacao_tipo ct ON ct.codigo = v.codigo_contratacao_tipo
JOIN endereco ende ON ende.codigo = v.codigo_endereco
LEFT JOIN cidade c ON c.codigo = ende.codigo_cidade
LEFT JOIN estado est ON est.codigo = c.codigo_estado
JOIN pais p ON p.codigo = ende.codigo_pais
JOIN profissao prof ON prof.codigo = v.codigo_profissao
UNION
SELECT '' as profissao_nome, CONCAT(u.nome,' ',u.sobrenome) as nome, '' as contratacao_tipo_nome, p.codigo as codigo,
'' as cidade_nome, '' as estado_sigla, '' as pais_nome, p.data_postagem as data,
p.descricao as postagem_descricao, m.avatar as membro_avatar, m.foto as membro_foto, m.foto_selecionada as membro_foto_selecionada
FROM postagem p
JOIN membro m ON m.codigo = p.codigo_membro
JOIN usuario u ON u.codigo_membro = m.codigo
) as tab ORDER BY data DESC LIMIT 0,5
我的猜测:超时。但我不明白为什么。仅用了 0.0067 秒
I test with this:
$sql_teste = "SELECT COUNT(*) FROM $tbl_membro";
$result_teste = mysql_query($sql_teste);
$ln_teste = mysql_fetch_array($result_teste);
print_r("start " . $ln_teste[0] . " end");
die();
And the result was:
start 90 end
then i tried this one:
SELECT profissao_nome, nome, contratacao_tipo_nome, codigo,
cidade_nome, estado_sigla, pais_nome, data,
postagem_descricao, membro_avatar, membro_foto, membro_foto_selecionada
FROM (
SELECT prof.nome as profissao_nome, e.razao_social as nome, ct.nome as contratacao_tipo_nome, v.codigo as codigo,
c.nome as cidade_nome, est.sigla as estado_sigla, p.nome as pais_nome, v.data_ultima_alteracao as data,
v.descricao as postagem_descricao, '' as membro_avatar, '' as membro_foto, '' as membro_foto_selecionada
FROM $tbl_vaga v
JOIN $tbl_empresa e ON v.codigo_empresa = e.codigo
JOIN $tbl_contratacao_tipo ct ON ct.codigo = v.codigo_contratacao_tipo
JOIN $tbl_endereco ende ON ende.codigo = v.codigo_endereco
LEFT JOIN $tbl_cidade c ON c.codigo = ende.codigo_cidade
LEFT JOIN $tbl_estado est ON est.codigo = c.codigo_estado
JOIN $tbl_pais p ON p.codigo = ende.codigo_pais
JOIN $tbl_profissao prof ON prof.codigo = v.codigo_profissao
UNION
SELECT '' as profissao_nome, CONCAT(u.nome,' ',u.sobrenome) as nome, '' as contratacao_tipo_nome, p.codigo as codigo,
'' as cidade_nome, '' as estado_sigla, '' as pais_nome, p.data_postagem as data,
p.descricao as postagem_descricao, m.avatar as membro_avatar, m.foto as membro_foto, m.foto_selecionada as membro_foto_selecionada
FROM $tbl_postagem p
JOIN $tbl_membro m ON m.codigo = p.codigo_membro
JOIN $tbl_usuario u ON u.codigo_membro = m.codigo
) as tab ORDER BY data DESC LIMIT 0,5
and my result was empty.
When i put:
print_r($sql_teste); and put the code in my database, i got my result just right
Showing rows 0 - 4 (5 total, Query took 0.0067 sec)
the print_r:
SELECT profissao_nome, nome, contratacao_tipo_nome, codigo,
cidade_nome, estado_sigla, pais_nome, data,
postagem_descricao, membro_avatar, membro_foto, membro_foto_selecionada
FROM (
SELECT prof.nome as profissao_nome, e.razao_social as nome, ct.nome as contratacao_tipo_nome, v.codigo as codigo,
c.nome as cidade_nome, est.sigla as estado_sigla, p.nome as pais_nome, v.data_ultima_alteracao as data,
v.descricao as postagem_descricao, '' as membro_avatar, '' as membro_foto, '' as membro_foto_selecionada
FROM vaga v
JOIN empresa e ON v.codigo_empresa = e.codigo
JOIN contratacao_tipo ct ON ct.codigo = v.codigo_contratacao_tipo
JOIN endereco ende ON ende.codigo = v.codigo_endereco
LEFT JOIN cidade c ON c.codigo = ende.codigo_cidade
LEFT JOIN estado est ON est.codigo = c.codigo_estado
JOIN pais p ON p.codigo = ende.codigo_pais
JOIN profissao prof ON prof.codigo = v.codigo_profissao
UNION
SELECT '' as profissao_nome, CONCAT(u.nome,' ',u.sobrenome) as nome, '' as contratacao_tipo_nome, p.codigo as codigo,
'' as cidade_nome, '' as estado_sigla, '' as pais_nome, p.data_postagem as data,
p.descricao as postagem_descricao, m.avatar as membro_avatar, m.foto as membro_foto, m.foto_selecionada as membro_foto_selecionada
FROM postagem p
JOIN membro m ON m.codigo = p.codigo_membro
JOIN usuario u ON u.codigo_membro = m.codigo
) as tab ORDER BY data DESC LIMIT 0,5
My guess: timeout. but i don't understand WHY. it took only 0.0067 sec
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不确定为什么会出现问题,但您应该能够看到错误消息。要查看查询错误,请执行以下操作:
Not sure why you have a problem but you should be able to see the error message. To see errors on a query do the following :