我在CakePHP 2.x中有以下MySQL查询它可以工作但是它需要很长时间,如果我删除"加入"它工作得很快,但是' Tag.tags LIKE' => '%' $ busqueda'%'部分不会工作,任何想法如何使这更快地工作?更好的说:我如何删除连接,仍然可以在Tag表上搜索? 它是内部网上搜索引擎的一部分 提前谢谢
$year = $this->request->query['year'];
$years = "year(`Saliente`.`fecha_rem`) = ".$year;
$this->loadModel('Saliente');
$this->Saliente->recursive = -1;
$busqueda_c = mysql_escape_string($busqueda);
$this->Saliente->bindModel(
array('hasAndBelongsToMany' => array(
'Tag' => array(
'className' => 'Tag',
'jointable' => 'salientes_tags',
'foreignKey' => 'saliente_id',
'associationForeignKey' => 'tag_id'
)
)
)
);
$options = array('joins' => array(
array('table' => 'salientes_tags',
'alias' => 'SalientesTag',
'type' => 'left',
'conditions' => array(
'Saliente.id = SalientesTag.saliente_id'
)
),
array('table' => 'tags',
'alias' => 'Tag',
'type' => 'left',
'conditions' => array(
'SalientesTag.tag_id = Tag.id'
)
)
), 'maxLimit' => 300, 'limit' => 10, 'contain' => array('Tag' => array('fields' => array('Tag.tags') )),
'fields' => array('Saliente.id', 'Saliente.usuario_id', 'Saliente.codigo', 'Saliente.asunto', 'Saliente.observacion',
'MATCH(Saliente.asunto, Saliente.observacion) AGAINST("+'.$busqueda_c.'*") AS relevance'), 'countField' => 'DISTINCT Saliente.id',
'conditions' => array($years, 'OR' => array("MATCH(Saliente.asunto, Saliente.observacion) AGAINST('+".$busqueda_c."*')",
'Saliente.codigo LIKE' => '%'.$busqueda.'%', 'Tag.tags LIKE' => '%'.$busqueda.'%' )),
'order' => 'relevance DESC,
fecha_rem DESC', 'group' => 'Saliente.id');
$this->Paginator->settings = $options;
$resultado = $this->Paginator->paginate('Saliente');
$this->set('resultado', $resultado);