Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Оптимизация запроса MySQL

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6

Открыть новую тему     Написать ответ в эту тему

DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день.
Подскажи структуру таблицы. В таблице будет храниться пункты меню сайта. Прикрепляю кратинку меню на сайте.
Спасибо.

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 16:26 18-04-2010
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke
в чём собственно сложность? о_О
 
id, parent id, name, url, order

----------
мой блог

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 19:23 18-04-2010
2007GhOsT2007

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
вот весь код. Он служит для  отбора 16 команд и создания матчей первого тура на 8игр.

Или можно попробовать мой код, но вместо $a = array_rand($a, 4); сделать shuffle($a);
Возможно, у Delta RuBoard код побыстрее будет, так как используется while, против моего foreach, но мой более гибкий... если количество команд меняется, то мой проще изменить (достаточно в запросе LIMIT поменять).

Всего записей: 26 | Зарегистр. 13-02-2007 | Отправлено: 22:03 18-04-2010
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
id, parent id, name, url, order

А можно подробнее, урл и ордер для чего, что в них хранить?
 
И еще там же два меню, которы отдельно выводятся друг от друга, но зависят от верхнего меню. если их так делать, то как я их разграничу.. все в одном массиве будет?

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 10:12 19-04-2010 | Исправлено: DarkSmoke, 10:15 19-04-2010
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
урл и ордер для чего

пункт меню же должен куда то ссылаться, order — порядок сортировки.
 

Цитата:
И еще там же два меню, которы отдельно выводятся друг от друга, но зависят от верхнего меню. если их так делать, то как я их разграничу.. все в одном массиве будет?

у "меню, которы отдельно выводятся друг от друга, но зависят от верхнего меню" будет один родитель (parent id) то самое верхнее меню
 
 
 
Добавлено:
а вообще такие крошечные структуры можно хранить в виде сериализованных массивов

----------
мой блог

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 10:50 19-04-2010
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
а вообще такие крошечные структуры можно хранить в виде сериализованных массивов

Прочел про сериализацию масивов. Ну млин тяжко как то. Можно разжевать?
 
Добавлено:
Как их применять

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 22:19 19-04-2010
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Как их применять

кого "их"?

----------
мой блог

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 22:41 19-04-2010
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
сериализованные массивы

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 00:01 20-04-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DarkSmoke

Цитата:
сериализованные массивы

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

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:02 20-04-2010
Ternik



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
 

Цитата:
сериализация используется только для сохранения массивов в файлах или базах данных.

+ в сессию =)

Всего записей: 763 | Зарегистр. 25-09-2002 | Отправлено: 11:09 20-04-2010
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ternik
Цитата:
+ в сессию =)

Не понимаю. Сессия автоматически преобразовывает массив в формат, подходящий для хранения. Я всегда просто сохраняю массив в сессии, ни чего с ним специально для этого не делая. То есть, что бы сохранить массив в сессию, ни какая сериализация не требуется.

Всего записей: 926 | Зарегистр. 28-07-2007 | Отправлено: 14:23 20-04-2010 | Исправлено: israel_rider, 15:20 20-04-2010
2007GhOsT2007

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А зачем так заморачиваться? Если структура крошечная и проект небольшой, то почему бы в отдельном php-файле этот массив не сохранить и не инклюдить его в нужных местах? И быстрее и без заморочек будет, но вот при рефакторинге будет неудобно, придется переделывать... Ну для начала весь удобно и быстро выйдет, но вот для изменения менюшки нужно будет иметь доступ к самим php-файлам, но думаю что это проблема.

Всего записей: 26 | Зарегистр. 13-02-2007 | Отправлено: 15:02 20-04-2010
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ternik

Цитата:
в сессию =)

я же написал - в файлах..  
israel_rider

Цитата:
 То есть, что бы сохранить массив в сессию, ни какая сериализация не требуется

потому что делается автоматоматически

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 17:45 20-04-2010
Delta RuBoard



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
сделай проверку по гентайму - получишь ответ на свой вопрос

----------
мой маленький блог
Создание on-line игр

Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 05:40 21-04-2010
onwars

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Снова нуждаюсь в вашей помощи. Нужно оптимизировать запрос

Код:
$q2 = mysql_query("SELECT * FROM `m_player` where `kom`='1' and `sostav`='1';");
$i = 0;  
/* Опит */
$r=rand(5,50);
/* Травма */
 
$ttime = rand(7200,86400);
$ttime = $realtime + $ttime;
 
if($krr1['trener'] >= 1){
$r=round($r*1.5*$krr1['trener']);
}
 
while( $x2 = mysql_fetch_assoc($q2))  
{  
/* Карточки1 */
$kardr=rand(10,10);
$travma=rand(1,10);
     
    $w2[$i]['opit'] = $x2['opit'] + $r;  
    $w2[$i]['name'] = $x2['name']  ;
    $w[] = $x2['name'];
    
    $w2[$i]['fiz'] = $x2['fiz']  ;
    $w2[$i]['voz'] = $x2['voz']  ;
    $w2[$i]['rm'] = $x2['rm']  ;
    
    $w2[$i]['otbor'] = $x2['otbor']  ;
    $w2[$i]['opeka'] = $x2['opeka']  ;
    $w2[$i]['drib'] = $x2['drib']  ;
    $w2[$i]['priem'] = $x2['priem']  ;
    $w2[$i]['vonos'] = $x2['vonos']  ;
    $w2[$i]['pas'] = $x2['pas']  ;
    $w2[$i]['sila'] = $x2['sila']  ;
    $w2[$i]['tocnost'] = $x2['tocnost']  ;
    $w2[$i]['tal'] = $x2['tal']  ;
    $w2[$i]['disk'] = $x2['disk'];
    $w2[$i]['sostav'] = $x2['sostav']  ;
    $w2[$i]['red_kard'] = $x2['red_kard']  ;
    $w2[$i]['kard'] = $x2['kard']  ;
    $w2[$i]['travma'] = $x2['travma']  ;
    /* Обновление карток */
    if($arr1['disk'] != 0){
    $w2[$i]['disk'] = $x2['disk'] - 1 ;
    }
    if ($kardr == 10){
    mysql_query("update `m_player` set  `sostav`= '0',`red_kard`= '1', `kard`= `kard`+1, `disk` = `disk`+2 where  `name`='".$w[6]."'   ;");
    $kardka2 = 'Игрок '.$w2[$i]['name'].' из команды '.$arr['name_team1'].' получает красную карточку и не сможет играть две игры. ';
    }else{$kardka2 = '';}
    if ($travma == 7){
    
    
    $vr1 = round(($ttime- $realtime )/3600);
    $travm = 'Игрок '.$w2[$i]['name'].' из команды '.$arr['name_team1'].' получает травму и не сможет играть   '.$vr1.' часов. ';
    mysql_query("update `m_player` set  `sostav`= '2', `travma`= '1', `ttime`='".$ttime."' where  `id`='".$w[5]."'   ;");
    }else{$travm = '';}
 
$mast = $w2[$i]['otbor'] + $w2[$i]['opeka'] + $w2[$i]['drib'] + $w2[$i]['priem'] + $w2[$i]['vonos'] + $w2[$i]['pas'] + $w2[$i]['sila'] + $w2[$i]['tocnost'];
$sila1 = $sila1 +  $w2[$i]['rm'];
$fiza1 = $w2[$i]['fiz'] - $w2[$i]['voz'];
$rmm1=round($mast*$w2[$i]['tal']/100*$fiza1);
    $i++;  
}  
$i = 0;  
while ($i < 25)  
{  
 mysql_query("update `m_player` set  
`opit`='".$w2[$i]['opit']."',
`fiz`='".$fiza1."',
`rm`='".$rmm1."',  
`mas`='".$mast."',  
 
`disk`= '".$w2[$i]['disk']."',  
 
where  `name`='".$w2[$i]['name']."' ;");  
    $i++;  
}
 

Всего записей: 19 | Зарегистр. 10-04-2010 | Отправлено: 17:32 21-04-2010
Tstf



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
имеется два запроса
 
        $sql = "SELECT b.name AS `brand_name`, g.id as `id`, g.name as `name`, g.brand_id as `brand_id`, g.sef_name as `sef_name` FROM " . $tabl_prefix . "_goods g left join " . $tabl_prefix . "_brands b on (b.id = g.brand_id) WHERE g.subsection_id = '{$id_s}'  {$condition} {$brand_condition} {$price_condition} {$show_condition} GROUP BY 1,2,3,4,5  ORDER BY `name`";
 
и
 
        $sql = "SELECT g.id as `id`, g.name as `name`, g.date as `date`, g.brand_id as `brand_id`, g.image as `image`, g.sef_name as `sef_name`, avg(r.rating) as `rating` {$order_type2} FROM " . $tabl_prefix . "_goods g left join " . $tabl_prefix . "_ratings r on (g.id = r.good_id) left join " . $tabl_prefix . "_goods_vendors gv on (g.id = gv.good_id) {$order_type3} WHERE g.subsection_id = '{$id_s}' {$order_type4}  {$condition} {$brand_condition} {$price_condition} {$show_condition} GROUP BY 1,2,3,4,5 {$order_type} LIMIT {$start},{$end}";
 
Как они с точки зрения оптимизации.
 
И вопрос, допустим есть Where id = '$id' AND id2 = '$id2'
 
Есть разница, если написать Where id2 = '$id2' AND id = '$id'

----------
Заработок 2.0

Всего записей: 788 | Зарегистр. 22-04-2003 | Отправлено: 19:28 21-07-2010
The_S

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Неподготовленный запрос. Вам SQL инъекцию когда нибудь сделают.
Что по теме.
g.subsection_id - должна индексироваться.
Еще не нравится вот это `GROUP BY 1,2,3,4,5`
 

Цитата:
Как они с точки зрения оптимизации.
И вопрос, допустим есть Where id = '$id' AND id2 = '$id2'
Есть разница, если написать Where id2 = '$id2' AND id = '$id'

1. Экономия на спичках
2. Чисто теоретически, (expr1 and expr2), expr2 - проверятся не будет, если expr1 = false.
Так что, 1-ое если у вас выпадени условия id == '$id' менее вероятнее чем id2 == '$id2'. Но это фигня.

Всего записей: 188 | Зарегистр. 13-09-2006 | Отправлено: 02:19 22-07-2010
Tstf



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
The_S

Цитата:
Неподготовленный запрос. Вам SQL инъекцию когда нибудь сделают.

Интересно, в чем же моя ошибка?


----------
Заработок 2.0

Всего записей: 788 | Зарегистр. 22-04-2003 | Отправлено: 23:40 23-07-2010
The_S

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tstf
Ошибки, как таковой - нет.

Всего записей: 188 | Зарегистр. 13-09-2006 | Отправлено: 15:16 24-07-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6

Компьютерный форум Ru.Board » Интернет » Web-программирование » Оптимизация запроса MySQL


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

LiteCoin: LgY72v35StJhV2xbt8CpxbQ9gFY6jwZ67r

Рейтинг.ru