Holy shit! Запрос ужасно тормозит

mdnt87

Новичок
Holly shit!

собственно есть БД в которой 2 типа таблиц, первый тип это таблицы
в которых содержутся поля имя, город, возраст и т.д...
в каждой таблице 1000+ записей
(разделение всей инфы на разные таблици идёт в зависимости от области в которой находится город)
2й тип... это одна таблица, с описанием, поля: id, имя таблиц и имя области

принцип работы пхп скрипта таков. в зависимости от опций он моделирует сукуль запрос
и выдаёт форматированый результат.
вот кусок кода:
PHP:
	foreach($oblasti AS $key=>$value){
		$i++;
		//echo "$key => $value ( $i )<br>";
		if ($i==1) $query .= "(select DISTINCT * from $value";
		if ($i>1) $query .= " UNION ALL (select DISTINCT * from $value";



		if ((!empty($Age1))&&(!empty($Age2)))
		$query .= " WHERE Age BETWEEN '".strval($Age1)."' AND '".strval($Age2)."' ";
		if ($City!="0")
		$query .= " AND City='$City' ";
		if ($Orientation!="0")
	}
на 2 таблицы получается вот такой запрос:

(select DISTINCT * from mykolaiv WHERE Age BETWEEN '18' AND '22' AND City='Балта' ) UNION ALL
(select DISTINCT * from odessa WHERE Age BETWEEN '18' AND '22' AND City='Балта' );

но это всё ужасно тормозит. незнаю что и делать уже.

добавлено:
теперь вообще непонимаю.
даже такой простейший запрос вешает скрипт намертво:

PHP:
$query = "select DISTINCT * from odessa; ";  //(в таблице odessa 6000 записей = 3.2Мб)
$res = mysql_query($query) or die(mysql_error());
мучаюсь 3й день. подскажите что нетак, посоветуйте оптимизацию.
 

FractalizeR

Новичок
А зачем там DISTINCT? Если выбираются все поля из таблицы, каким образом там могут оказаться неуникальные значения? Там ведь как минимум первичный ключ каждой записи уникален в пределах таблицы.

То, что вешает скрипт намертво имеет смысл попробовать выполнить из PHPMyAdmin.

Вы могли бы привести SHOW CREATE TABLE для ваших таблиц?

Кстати, почему было принято решение данные по разным городам хранить в разных таблицах? У вас, судя по всему, объем данных не так уж и велик. Из-за этого разделения теперь получаются сумасшедшие UNION...
 

Splurov

Новичок
вместо нескольких таблиц по городам сделайте одну, и добавьте кроме стандартных колонок, колонку с region_id из таблицы описаний.
 
Сверху