Это мой простой запрос в mysql / zend:
// Get Patients
$table = new Model_Patient_DbTable();
$select = $table->select();
$select->from( 'patient' );
$select->setIntegrityCheck( false );
// insurance join
$select->joinLeft( 'insurance', 'patient.insuranceId=insurance.Id',
array( 'insName' => 'insName'));
// Get total no of records
$totalRecords = count( $table->fetchAll( $select ) );
// Filters
if( $inactive ) {
$select->where('patient.inactive = ?', $inactive );
}
// Other where clause conditions
// Fetch filtered patient records
$patientRecords = $table->fetchAll( $select );
// Get total no of filtered patient records
$filteredRecords = count( $table->fetchAll( $select ) );
В приведенном выше запросе zend я получаю записи о пациентах и их страховки на основе некоторых условий в предложении where.Я должен получить (1) Общее количество записей, (2) Общее количество отфильтрованных записей, а также (3) Записи пациентов для отображения настраница интернета.
Проблема в том, что в моем приведенном выше запросе мне приходится извлекать записи 3 раза, что снижает производительность при наличии 10 000 записей.Как я могу оптимизировать свой запрос, чтобы он выбирал записи только один раз ИЛИ должен существовать отдельный запрос для подсчета, который будет получать только общее количество записей вместо выборки всех записей.
Каждый ответ будет оценен.
Спасибо, Спасибо