|
|
|
| Просьба помочь с оптимизацией. Запрос на таблицах, в каждой из которых по миллиону записей выполняется 2-12 сек. Необходимо уменьшить это время до < 1 сек. Спасибо.
mysql 4.0.22
SELECT DISTINCT
(table.tid) AS tid ,
(MATCH(table.name) AGAINST ('word')
+MATCH(table.descr) AGAINST ('word')
+MATCH(table.owner) AGAINST('word')) AS relevance
FROM table, price
WHERE price.tid=table.tid
AND price.quantity=1
AND price.vid = 0
AND (MATCH(table.name) AGAINST ('word')
OR MATCH(table.descr) AGAINST ('word')
OR MATCH(table.owner) AGAINST('word'))
AND table.exists='Y'
GROUP BY table.tid
ORDER BY relevance DESC, table.avail DESC
limit 150
CREATE TABLE 'price' (
'pid' int(11) NOT NULL auto_increment,
'tid' int(11) NOT NULL default '0',
'quantity' int(11) NOT NULL default '0',
'vid' int(11) NOT NULL default '0',
PRIMARY KEY ('pid'),
UNIQUE KEY 'tid' ('tid','vid'),
KEY 'vid' ('vid'),
KEY 'tvq' ('tid','vid','quantity'),
) TYPE=MyISAM;
CREATE TABLE 'table' (
'tid' int(11) NOT NULL auto_increment,
'name' varchar(255) NOT NULL default '',
'descr' text NOT NULL,
'avail' int(11) NOT NULL default '0',
'exists' char(1) NOT NULL default 'Y',
'owner' varchar(255) NOT NULL default '',
PRIMARY KEY ('tid'),
KEY 'name' ('name'),
KEY 'avail' ('avail'),
KEY 'et' ('exists','tid'),
KEY 'eta' ('exists','tid','avail'),
KEY 'owner' ('owner'),
FULLTEXT KEY 'ft_name' ('name'),
FULLTEXT KEY 'ft_descr' ('descr'),
FULLTEXT KEY 'ft_owner' ('owner')
) TYPE=MyISAM; | |
|
|
|
|
|
|
|
для: sord
(22.07.2006 в 19:10)
| | Приведите ещё запрос. Работа происходит на локальной машине или не сервере, который вы не можете настраивать? | |
|
|
|
|
|
|
|
для: cheops
(22.07.2006 в 21:54)
| | остальные запросы не используют fulltext индексы, и с ними проблем нет, в основном это запросы типа SELECT * FROM table WHERE pid IN (...). Работа на удаленном MySQL-сервере, но настраивать, с некоторыми ограничениями, я его могу. Ограничения - ап/даун-грейд сервера делать не могу. | |
|
|
|
|
|
|
|
для: sord
(23.07.2006 в 14:27)
| | Погодите, а почему IN? Вы MATCH не используете? Если нет, тогда у вас FULLTEXT индексы получаются не задействованы... | |
|
|
|
|
|
|
|
для: cheops
(23.07.2006 в 16:06)
| | Match используется в запросе, который я написал в первом посте, этот запрос и является основным тормозом, его и необходимо оптимизировать. Причем не обязательно сам запрос, возможно, вообще сменить структуру таблиц. | |
|
|
|