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

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

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

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

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

israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Попробовал про этот ОЛАП почитать.... Что то сложно... И вообще ни чего не понятно.... И в первую очередь - какое он имеет отношение к моему вопросу?

Всего записей: 926 | Зарегистр. 28-07-2007 | Отправлено: 23:54 15-01-2010
andead



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

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

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 00:02 16-01-2010
israel_rider

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

Всего записей: 926 | Зарегистр. 28-07-2007 | Отправлено: 00:19 16-01-2010
APTEM



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

Цитата:
Что то сложно... И вообще ни чего не понятно....  

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

Всего записей: 396 | Зарегистр. 16-07-2004 | Отправлено: 02:29 16-01-2010
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день.
Подскажите пожалуйста с запросом. А то кучей запросов я такое могу сделать, а вот одним это можно сделать? Мне нужно что бы получилось:
 
НОВОСТИ
   Добавить
   Редактировать
ПРАЙС
   Добавить
   Редактировать
НАСТРОЙКИ
   Курс Евро
   Разделы
 
... и т.д.  

Код:
--  
-- Структура таблицы `Menu`
--  
 
CREATE TABLE `Menu` (
  `id` int(11) NOT NULL auto_increment,
  `parent_id` int(11) NOT NULL,
  `name` tinytext NOT NULL,
  `href` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=14 ;
 
--  
-- Дамп данных таблицы `Menu`
--  
 
INSERT INTO `Menu` VALUES (1, 0, 'Новости', '');
INSERT INTO `Menu` VALUES (2, 0, 'Прайс', '');
INSERT INTO `Menu` VALUES (3, 0, 'Настройки', '');
INSERT INTO `Menu` VALUES (4, 0, 'Выход', '');
INSERT INTO `Menu` VALUES (5, 1, 'Добавить', '?p=news_add');
INSERT INTO `Menu` VALUES (6, 1, 'Редактировать', '?p=news_edit');
INSERT INTO `Menu` VALUES (7, 2, 'Добавить', '?p=price_add');
INSERT INTO `Menu` VALUES (8, 2, 'Редактировать', '?p=price_edit');
INSERT INTO `Menu` VALUES (9, 3, 'Курс Евро', '?p=exchange');
INSERT INTO `Menu` VALUES (10, 3, 'Разделы', '?p=razdel');
INSERT INTO `Menu` VALUES (11, 3, 'Подразделы', '?p=podrazdel');
INSERT INTO `Menu` VALUES (12, 3, 'Цвета', '?p=color');
INSERT INTO `Menu` VALUES (13, 3, 'Сменить пароль', '?p=password');


Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 10:54 23-01-2010 | Исправлено: DarkSmoke, 10:59 23-01-2010
andead



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
получаете весь список одни запросом и с помощью php форматируете как хотите, это не задача mysql

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

Всего записей: 1821 | Зарегистр. 22-09-2005 | Отправлено: 15:31 23-01-2010
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день еще раз.
Узнал про внешние ключи. Классная штука, ну вот что то я наверное не до понимаю. Есть три таблицы Раздел, Подраздел и Прайс.
Хочу чтобы если я удалю подраздел, то все продукты касающиеся этого подраздела тоже удалялись. И если я удаляю Раздел, то что бы все разделы и продукты, которые принадлежат этому разделу  - удалялись.
 
Делал по разному, но поведение совсем не могу понять, то удаляется не то что надо, то не добавляется.. что то не понимаю я.
 
Как связать таблицы?
 

Код:
--  
-- Структура таблицы `Razdel`
--  
 
CREATE TABLE `Razdel` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` tinytext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;
 
--  
-- Структура таблицы `Podrazdel`
--  
 
CREATE TABLE `Podrazdel` (
  `id` int(11) NOT NULL auto_increment,
  `name` tinytext NOT NULL,
  `razdel_id` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
 
--  
-- Структура таблицы `Price`
--  
 
CREATE TABLE `Price` (
  `id` int(11) NOT NULL auto_increment,
  `razdel_id` int(11) default NULL,
  `podrazdel_id` int(11) default NULL,
  `img` tinytext NOT NULL,
  `articul` tinytext NOT NULL,
  `name` tinytext NOT NULL,
  `color_id` int(4) default NULL,
  `long` tinyint(4) NOT NULL,
  `col` tinyint(4) NOT NULL,
  `price` float default NULL,
  `new` enum('0','1') NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `podrazdel_id` (`podrazdel_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;


Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 18:44 23-01-2010
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ON DELETE какой выбирал?
 
http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
 
тебе нужно ON DELETE CASCADE

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 19:57 23-01-2010
DarkSmoke



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ну да.. я его и делал.. просто к какой таблице применять его?

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



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

Всего записей: 962 | Зарегистр. 08-10-2005 | Отправлено: 13:07 24-01-2010
zerkms

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

Цитата:
Ну да.. я его и делал.. просто к какой таблице применять его?

если не можешь с большими таблицами - потренируйся для начала на маленьких.
ON DELETE нужен для связанной таблицы. тогда при удалении из основной - всё будет снесено и из связанной.

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 17:35 24-01-2010
kolyas



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
вопро к профи в оптимизации..  
как лучше сделать  и правильнее.. ?
 

Код:
 
 
table_1
table_1_id
table_1_pole_1
table_1_pole_2
table_1_pole_3
 
table_2
table_2_id
table_2_pole_1
table_2_pole_2
table_2_pole_3
table_1_id
 

 
и при Выборке
 

Код:
 
SELECT  
    *
FROM
    table_1, table_2
WHERE
    table_2.table_1_id=table_1.table_1_id
 

 
или
 

Код:
 
 
table_1
id
pole_1
pole_2
pole_3
 
table_2
id
pole_1
pole_2
pole_3
 

 
и при Выборке  
 

Код:
SELECT  
table_1.id as table_1_id,
table_1.pole_1 as table_1_pole_1,
table_1.pole_2 as table_1_pole_2,
table_1.pole_3 as table_1_pole_3,
 
table_2.id as table_2_id,
table_2.pole_1 as table_2_pole_1,
table_2.pole_2 as table_2_pole_2,
table_2.pole_3 as table_2_pole_3,
 
FROM
    table_1, table_2
WHERE
    table_2.table_1_id=table_1.id
 


Всего записей: 137 | Зарегистр. 19-03-2007 | Отправлено: 20:31 24-01-2010 | Исправлено: kolyas, 21:21 24-01-2010
substrackto

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kolyas, быстрее должно быть с "односторонним" (не full) join-ом и перечислением всех нужных столбцов

Всего записей: 93 | Зарегистр. 25-10-2007 | Отправлено: 22:14 24-01-2010
kolyas



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
substrackto
односторонний это left, right join ?

Всего записей: 137 | Зарегистр. 19-03-2007 | Отправлено: 22:27 24-01-2010
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
substrackto
c чего ты взял, что у него там FULL? в первом варианте запроса используется семантический эквивалент конструкции INNER JOIN.
 
Добавлено:
kolyas
разница между скорострельностью обоих запросов, которые, насколько можно заметить, отличаются лишь более короткими именами и явным перечислением - будет порядка ошибки измерений (разве что ты там не хранишь блобы с десятками мегабайт). так что ты паришься не о том.

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 01:49 25-01-2010
kolyas



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
zerkms
блобы не храню в основном varchar(255) и int(10)
 
а о чем надо париться ..?

Всего записей: 137 | Зарегистр. 19-03-2007 | Отправлено: 09:31 25-01-2010
zerkms

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

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 09:36 25-01-2010
kolyas



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
zerkms
нет..
по двум причинам ..
1 все еще стадии запуска.
2 база - каталог для очень небольшого сайта..
 
поэтому хотелось бы знать как правильно делать...чтоб сразу приучить себя так делать всегда..
 

Всего записей: 137 | Зарегистр. 19-03-2007 | Отправлено: 09:57 25-01-2010
zerkms

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kolyas
оптимизация бд до реальных нагрузок - это очень сложная наука. нужно представлять как работает субд, как хранит данные, как читает, как строит запросы и использует индексы, как использует буфера и кэш, итд итп.
нельзя научиться этому по советам, хотя бы потому - что панацеи и общих советов не существует.

----------
tvfёdor - оперативно уведомляет о раздачах rutracker | Блог об иммиграции в Новую Зеландию

Всего записей: 387 | Зарегистр. 07-05-2004 | Отправлено: 11:14 25-01-2010
kolyas



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
по поводу всесобирающего запроса я понял...
а вот как поступать когда из 5-6 таблиц нужно выбрать данные с большим количеством условий
 
как правильно поступать - выбрать все данные и раскидать с помощью php, или все таки делать все  условия в самом мускуле ?

Всего записей: 137 | Зарегистр. 19-03-2007 | Отправлено: 17:47 25-01-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