@viktorross

Почему скрипт долго думает при выборке?

здравствуйте, почему скрипт при выборке думает около полу минуты в первом случае, во втором случае отвечает мгновенно, но нужную выборку по дате не могу поставить, как только добавляю

$order_by_str="order by date_added desc";
$order_way='';


начинает думать при открытии страницы

вот первый вариант который думает долго

function getLatest($no_latest, $where = '') {

		global $db, $settings;

		$locations_str="";
		if($settings['enable_locations'])
			$locations_str = locations::makeQueryStr();

		$where="where ".TABLE_ADS.".active = 1".$where.$locations_str;

		$order_by_str="order by date_added desc";
		$order_way='';
		$start=0;
		$ads_per_page=$no_latest;

		$result=$this->getShortListings($where,$order_by_str,$order_way,$start,$ads_per_page);
		return $result;
	}


а вот этот открывает моментально, но не понятно по какому выбору

function getLatest($no_latest, $where = '') {

		global $db, $settings;

		$locations_str="";
		if($settings['enable_locations'])
			$locations_str = locations::makeQueryStr();

		$where="where ".TABLE_ADS.".active = 1".$where.$locations_str;

		// solution to avoid order by rand() 

		$total_latest = $db->fetchRow("select count(*) from ".TABLE_ADS." ".$where);

		if($total_latest<=$no_latest) {

			$result=$this->getShortListings($where,"","",0,0);
			//shuffle ( $result );
			//return $result;

		}

		// more than $no_featured results
		//$t = $total_latest - $no_latest;
		$start = 0;

		$result=$this->getShortListings($where,"","",$start,$no_latest);
		return $result;

	}


подскажите пожалуйста как сделать выборку по дате как в первом случае, но чтобы открывалось также быстро как во втором, количество записей берется и в первом случае и во втором одинаковое, в чем проблема не понятно..
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
По тому что кто-то забыл про индексы. А еще это поле неизвестно какого типа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы