Мне нужно оптимизировать таблицы и запросы - PullRequest
0 голосов
/ 23 марта 2020

У меня есть 3 таблицы: информация, данные, ссылка, есть запрос данных:

select *
from data,link,info
where link.info_id = info.id and link.data_id = data.id

предлагаем варианты оптимизации: а) таблицы б) запрос. Запросы для создания таблиц:

CREATE TABLE info (
        id int(11) NOT NULL auto_increment,
       name varchar(255) default NULL,
        desc text default NULL,
        PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

CREATE TABLE data (
        id int(11) NOT NULL auto_increment,
        date date default NULL,
        value INT(11) default NULL,
        PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

CREATE TABLE link (
        data_id int(11) NOT NULL,
        info_id int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Спасибо!

1 Ответ

0 голосов
/ 23 марта 2020

Никогда не используйте запятые в предложении FROM. Всегда используйте правильный, явный, стандартный , читаемый синтаксис JOIN:

select *
from data d join
     link l
     on l.data_id = d.id join
     info i
     on l.info_id = i.id;

Во-вторых, для этого запроса ваши индексы, вероятно, подходят. Я бы также рекомендовал индекс первичного ключа для link:

CREATE TABLE link (
    data_id int(11) NOT NULL,
    info_id int(11) NOT NULL,
    PRIMARY KEY (data_id, info_id)
);

В целом это хорошая идея, даже если она не указана c для этого запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...