Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите избавится от using filesort Начинающий / 9 сообщений из 9, страница 1 из 1
21.08.2014, 16:27:32
    #38725791
xoonya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите избавится от using filesort Начинающий
explain SELECT I.id, I.title, I.short_text, I.quantity, I.psevd, I.liks, I.price, I.old_price, I.on_board, I.type, P.picture_file
FROM {MY_DB_PREFIX}_item I
LEFT JOIN {MY_DB_PREFIX}_pictures P ON (P.chapter = 'item' AND P.m = 1 AND I.id = P.item_id)
LEFT JOIN {MY_DB_PREFIX}_brands B ON (B.id = I.brand_id AND B.lang_id = 'ru')
LEFT JOIN {MY_DB_PREFIX}_categories C ON (C.id = I.cat_id AND C.lang_id = 'ru')
WHERE(I.price BETWEEN 10 AND 1500 AND I.active = 1)
ORDER BY I.on_board DESC


Причем есть составной индекс по полям таблички item и отельный индекс по полю on_board как поступить не приложу ума помогите разобрацо плз!!!
...
Рейтинг: 0 / 0
21.08.2014, 16:30:36
    #38725796
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите избавится от using filesort Начинающий
1) Тут есть тег кода.
2) А где собсно explain?
3) Где DDL таблиц?
4) По какой логике все связывания левые?
...
Рейтинг: 0 / 0
21.08.2014, 16:34:17
    #38725806
xoonya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите избавится от using filesort Начинающий
1 SIMPLE I ref item_index item_index 1 const 150 Using where; Using filesort
1 SIMPLE P ref chapter,m,item_id chapter 66 const,muscle05_db.I.id 1
1 SIMPLE B eq_ref PRIMARY,lang_id,id PRIMARY 4 muscle05_db.I.brand_id 1
1 SIMPLE C eq_ref PRIMARY,lang_id PRIMARY 4 muscle05_db.I.cat_id 1

explain запроса.
...
Рейтинг: 0 / 0
21.08.2014, 16:36:10
    #38725810
xoonya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите избавится от using filesort Начинающий
Левые связаны только по id движок myisam без внешних ключей
...
Рейтинг: 0 / 0
21.08.2014, 16:40:31
    #38725817
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите избавится от using filesort Начинающий
1) Почему левые, а не внутренние?
2) Где DDL?
3) Почему не пользуемся тегами? текстовая лапша плохо читается.
...
Рейтинг: 0 / 0
21.08.2014, 16:41:28
    #38725820
xoonya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите избавится от using filesort Начинающий
CREATE TABLE `scms_categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lang_id` varchar(2) NOT NULL,
`parent` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`use_short_text` tinyint(1) NOT NULL,
`create_date` int(11) NOT NULL,
`edit_date` int(11) NOT NULL,
`active` tinyint(1) NOT NULL,
`sort` int(11) NOT NULL,
`psevd` varchar(128) NOT NULL,
`slider_slim` tinyint(1) NOT NULL DEFAULT '1',
`slider_mass` tinyint(1) NOT NULL DEFAULT '1',
`slider_tonus` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
KEY `lang_id` (`lang_id`),
KEY `sort` (`sort`),
KEY `psevd` (`psevd`),
KEY `slider_tonus` (`slider_tonus`),
KEY `active` (`active`),
KEY `slider_mass` (`slider_mass`),
KEY `slider_slim` (`slider_slim`),
KEY `title` (`title`)
) ENGINE=MyISAM AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='Категории';


CREATE TABLE `scms_pictures` (
`picture_id` int(11) NOT NULL AUTO_INCREMENT,
`chapter` varchar(20) NOT NULL,
`item_id` int(11) NOT NULL,
`m` int(1) NOT NULL DEFAULT '0',
`date` int(11) NOT NULL,
`admin_id` int(6) NOT NULL,
`picture_file` varchar(250) NOT NULL,
`picture_bg` varchar(255) DEFAULT NULL,
`sort` int(11) NOT NULL,
`name` varchar(15) NOT NULL,
`info` varchar(255) NOT NULL,
`temp` int(1) NOT NULL DEFAULT '1',
`comment` varchar(128) NOT NULL,
PRIMARY KEY (`picture_id`),
KEY `chapter` (`chapter`,`item_id`),
KEY `m` (`m`),
KEY `item_id` (`item_id`)
) ENGINE=MyISAM AUTO_INCREMENT=423 DEFAULT CHARSET=utf8 COMMENT='Данные о изображениях';



CREATE TABLE `scms_brands` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`brands` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`caption` varchar(255) NOT NULL,
`link` varchar(255) NOT NULL,
`create_date` int(11) NOT NULL,
`edit_date` int(11) NOT NULL,
`active` tinyint(1) NOT NULL,
`sort` int(11) NOT NULL,
`lang_id` varchar(2) NOT NULL,
`psevd` varchar(128) NOT NULL,
PRIMARY KEY (`id`),
KEY `lang_id` (`lang_id`),
KEY `sort` (`sort`),
KEY `brands` (`brands`),
KEY `title` (`title`),
KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COMMENT='Брэнды';


CREATE TABLE `scms_item` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lang_id` varchar(2) NOT NULL,
`cat_id` int(11) unsigned NOT NULL,
`on_board` int(11) unsigned NOT NULL DEFAULT '0',
`chapter` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`sign` varchar(255) NOT NULL,
`short_text` text NOT NULL,
`text` longtext NOT NULL,
`composition` text NOT NULL,
`features` text NOT NULL,
`keywords` text NOT NULL,
`description` text NOT NULL,
`use_short_text` tinyint(1) NOT NULL,
`create_date` int(11) NOT NULL,
`price` int(11) unsigned NOT NULL,
`old_price` int(11) unsigned NOT NULL,
`atikle` int(11) NOT NULL,
`liks` int(11) NOT NULL,
`edit_date` int(11) NOT NULL,
`active` tinyint(1) NOT NULL,
`sort` int(11) NOT NULL,
`psevd` varchar(128) NOT NULL,
`mass` tinyint(1) unsigned NOT NULL DEFAULT '1',
`tonus` tinyint(1) unsigned NOT NULL DEFAULT '1',
`slim` tinyint(1) unsigned NOT NULL DEFAULT '1',
`type` varchar(255) NOT NULL,
`quantity` varchar(255) NOT NULL,
`term` varchar(255) NOT NULL,
`brand_id` int(10) unsigned NOT NULL,
`feeds` int(11) NOT NULL,
`discount_condition` text NOT NULL,
`specification` text NOT NULL,
`describe` text NOT NULL,
`top_title` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `type` (`type`),
KEY `item_index` (`active`,`term`,`price`),
KEY `psevd` (`psevd`),
KEY `on_board` (`on_board`)
) ENGINE=MyISAM AUTO_INCREMENT=178 DEFAULT CHARSET=utf8 COMMENT='Товары';


Вот таблицы.....
...
Рейтинг: 0 / 0
21.08.2014, 16:48:17
    #38725836
xoonya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите избавится от using filesort Начинающий
Я не до конца понимаю различие между LEFT JOIN и INNER JOIN но последний по всем таблицам добавляет using where что не есть хорошо как я понимаю. Прошу извенить за плоское изяснение мыслей, но как смог...
...
Рейтинг: 0 / 0
23.08.2014, 14:54:51
    #38727259
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите избавится от using filesort Начинающий
xoonyaкак поступить не приложу ума
Да просто убери из запроса ORDER BY. Назачем он тебе там такой?..
...
Рейтинг: 0 / 0
24.08.2014, 07:11:20
    #38727416
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите избавится от using filesort Начинающий
xoonyaexplain SELECT I.id, I.title, I.short_text, I.quantity, I.psevd, I.liks, I.price, I.old_price, I.on_board, I.type, P.picture_file
FROM {MY_DB_PREFIX}_item I
LEFT JOIN {MY_DB_PREFIX}_pictures P ON (P.chapter = 'item' AND P.m = 1 AND I.id = P.item_id)
LEFT JOIN {MY_DB_PREFIX}_brands B ON (B.id = I.brand_id AND B.lang_id = 'ru')
LEFT JOIN {MY_DB_PREFIX}_categories C ON (C.id = I.cat_id AND C.lang_id = 'ru')
WHERE(I.price BETWEEN 10 AND 1500 AND I.active = 1)
ORDER BY I.on_board DESC


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


добавьте еше два индекса, отличаюшиеся порядком:

1. (прайс,активе)
2. (активе,присе)

посмотрите если стало быстрее и какой имено индекс
подцепился.
второй убрать.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите избавится от using filesort Начинающий / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]