也许你可以帮助我。
我有一个使用express的节点应用程序,它正在查询mysql数据库。 我正在使用mysql2进行连接。
这是一个带有一些参数(两个日期)的查询,尽管它在数据库上运行0秒,但在节点上却超时。
以下是查询代码:
controleTemp.prototype.getFreeVeichles = function(dataInicio,dataFim,callback){
var queryTxt=
'select distinct ID,Modelo,Fabricante,'+
'Placa,Ano,Motor,control.Status,Disponivel,Quilometragem,Atribuido from '+
'controletemp as control '+
'JOIN booking as book '+
'ON control.id = book.veiculoID '+
'Where veiculoID not in( '+
'select veiculoid from ' +
'controletemp as ct '+
'JOIN booking as bk '+
'ON ct.id = bk.veiculoID '+
'Where \''+dataInicio+'\' between '+
'dataInicio and dataFim OR \''+dataFim+'\' between '+
'dataInicio and dataFim)';
this._dbConnection.query(queryTxt);
提前谢谢大家
答案 0 :(得分:0)
您错过了传递给过滤器的列名和值。 这是一个经过优化的查询,您应该相信我的逻辑:
'SELECT DISTINCT ' +
' ID,Modelo,Fabricante,' +
' Placa,Ano,Motor,control.Status,Disponivel,Quilometragem,Atribuido ' +
'FROM controletemp as control ' +
'JOIN booking as book ' +
' ON control.id = book.veiculoID ' +
'WHERE (dataInicio < \'' + dataInicio +'\' OR dataInicio > \'' + dataFim +'\')' +
' AND (dataFim < \'' + dataInicio +'\' OR dataFim > \'' + dataFim +'\');'