Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимизация в MySQL, Оптимизация в MySQL 
:(
    Опции темы
anka
  Дата 20.9.2007, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 18.9.2006
Где: Azerbaijan

Репутация: нет
Всего: нет



Привет всем из Азербайджане

Код

$result=mysql_query("SELECT * FROM inv WHERE object_razdel='obj' and owner='".$_SESSION['login']."' ORDER BY date DESC");

while($data = mysql_fetch_array($result))
{
                        $item_id=$data["id"];
        $obj_id=$data["object_id"];
        $obj_type=$data["object_type"];        
        $r2=mysql_query("SELECT * FROM $obj_type WHERE id=$obj_id");
        $dat=mysql_fetch_array($r2);
        $name=$dat["name"];
        echo $name;
}


Думаю поняли... smile 

Как мне оптимизироват здес MySQL   smile  smile  smile 
PM MAIL WWW ICQ   Вверх
sTa1kEr
Дата 20.9.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



На сколько я понимаю, нужно брать "name" и разных таблиц в зависимости от "object_type"? Хм...
Единственный способ сделать это одним запросом (без вложенных запросов) - это связать сразу все возможные таблицы и уже в зависимости от object_type брать нужное поле
Код

SELECT i.*, (CASE i.`object_type`
                    WHEN 'table1' THEN t1.`name`
                    WHEN 'table2' THEN t2.`name`
                    WHEN 'table3' THEN t3.`name`
                    -- и т.д. все возможные варианты object_type
                    ELSE NULL END) AS name
   FROM inv AS i
INNER JOIN table1 AS t1 ON t1.`id` = i.`object_id`
INNER JOIN table2 AS t2 ON t2.`id` = i.`object_id`
INNER JOIN table3 AS t3 ON t3.`id` = i.`object_id`
-- и т.д. все возможные таблицы
WHERE `object_razdel` = 'obj' AND `owner` = 'user'
ORDER BY `date` DESC;

Но если таких таблиц много, то, скорее всего, это не принесет оптимизации, тогда только менять структуру БД.
PM MAIL   Вверх
anka
Дата 21.9.2007, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 18.9.2006
Где: Azerbaijan

Репутация: нет
Всего: нет



Я немогу менят таблиц... Этот код с онлайн игры... Код инветаря... И у меня там много табличи object_type=база вешей(axe,sword,armour,....)


P.S. Спасибо за помош.... 

Это сообщение отредактировал(а) anka - 21.9.2007, 08:28
PM MAIL WWW ICQ   Вверх
anka
Дата 21.9.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 18.9.2006
Где: Azerbaijan

Репутация: нет
Всего: нет



Честно говоря у меня совсем другая проблема:

мне нужно конвертировать возвращаемый текст в таблицу и вывести все ее записи.

Код



table_main ('tbl1','tbl2',....)  (where table_main.fld='tbl1' return tbl1.*) or  
(where table_main.fld='tbl2' return tbl2.*) ...



Реализация у меня вот такая толбко не могу найти функцию или что ты подобнее вместо ???

Код


select (if i.tname='один' then [color=red]???[/color]  end if ) 
from (SELECT tname FROM tbls) as i where i.tname='один'







Это сообщение отредактировал(а) anka - 21.9.2007, 09:11
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0686 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.