Как выполнить запрос?

J
На сайте с 08.06.2006
Offline
844
522

select csv_prices.mag,count(csv_prices.mag) from csv_prices,csv_direct where csv_prices.mag=39 and LOCATE(csv_direct.name,csv_prices.name) group by csv_prices.mag

csv_prices 170 000 строк

csv_direct 20 000 строк

зависает сервер. мускул дает загрузку процессора на 100%.

---------- Добавлено 21.11.2014 в 11:52 ----------

добавление ключей не помогло

---------- Добавлено 21.11.2014 в 11:52 ----------

сервер Virtual CPU 1200Mhz, 1536Mb memory

увеличить ресурсы может попробовать?

siv1987
На сайте с 02.04.2009
Offline
427
#1

EXPLAIN SELECT и SHOW CREATE TABLE покажите.

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

J
На сайте с 08.06.2006
Offline
844
#2

csv_prices

CREATE TABLE `csv_prices` (

`mag` int(11) NOT NULL,

`name` varchar(255) NOT NULL,

`url` varchar(255) NOT NULL,

`price` double NOT NULL,

`jd` varchar(255) NOT NULL,

`model` varchar(255) NOT NULL,

`vendor` varchar(255) NOT NULL,

KEY `name` (`name`),

KEY `name_2` (`name`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251

---------- Добавлено 24.11.2014 в 13:16 ----------

csv_direct

CREATE TABLE `csv_direct` (

`name` varchar(255) NOT NULL,

UNIQUE KEY `name_2` (`name`),

KEY `name` (`name`),

KEY `name_3` (`name`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251

J
На сайте с 08.06.2006
Offline
844
#3

Вот еще !........

png 2134124.png
totamon
На сайте с 12.05.2007
Offline
437
#4

1. зачем использовать LOCATE? не пробовали с простым поиском LIKE %%

2. смысл вешать простой индекс на строку? если вешать то FULLTEXT это снижает нагрузку при поиске,

3. в csv_prices тоже индексы на строках а на mag индекса нет, хотя на нем бы он как раз работал.

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

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
siv1987
На сайте с 02.04.2009
Offline
427
#5

Таблица csv_prices не имеет первичного ключа? Вы используете mag в условие.

Зачем вам столько индексов одного поле?

UNIQUE KEY - это тоже индекс, создавать отдельный индекс для того же поле не нужно.

csv_direct.name = csv_prices.name

или MATCH AGAINST для полно-текстового поиска

или, как посоветовали выше, переделать структуру и добавить ид для связи таблиц.

J
На сайте с 08.06.2006
Offline
844
#6

где какие ключи добавить или удалить

структуру переделать нет возможности сейчас

csv_direct.name = csv_prices.name не проходит

нужно именно сравнение вхождения

siv1987
На сайте с 02.04.2009
Offline
427
#7
joost:
где какие ключи добавить или удалить

Вам все написали в двух сообщениях где и какие ключи нужно заменить. Не тыкать же носом как в детский сад в самом деле. Будьте добры, прочитайте внимательно несколько раз. Ну то, что таблице csv_prices нужно добавить первичный ключ это однозначно. mag у вас что, не уникальный идентификатор?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий