2016-09-29 6 views
0

Я пытаюсь оптимизировать следующие запросы в таблице, содержит более 1,2 миллиона записей.оптимизация поискового запроса Mysql

# 1 - Время выполнения: 0,6605, используемый для получить пунктов

SELECT * FROM `videos` WHERE MATCH (name,tags) AGAINST ('mytag' IN BOOLEAN MODE) LIMIT 20 

* # 2 - Время выполнения: 0,5186, используется для системы постраничной *

SELECT COUNT(*) AS `numrows` FROM `videos` WHERE MATCH (name,tags) AGAINST ('mytag' IN BOOLEAN MODE) 

Элемент моего стола

DROP TABLE IF EXISTS `videos`; 
CREATE TABLE `videos` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`name` varchar(255) NOT NULL, 
`name_url` varchar(255) DEFAULT NULL, 
`categories` varchar(255) DEFAULT NULL, 
`embed` tinytext, 
`description` text, 
`tags` varchar(255) DEFAULT NULL, 
`hd` smallint(6) DEFAULT '0', 
`views` int(11) NOT NULL DEFAULT '0', 
`likes` int(11) DEFAULT '0', 
`dislikes` int(11) DEFAULT '0', 
`cover` varchar(255) DEFAULT NULL, 
PRIMARY KEY (`id`,`name`), 
FULLTEXT KEY `categories` (`categories`), 
FULLTEXT KEY `name` (`name`), 
FULLTEXT KEY `tags` (`tags`) 
) ENGINE=MyISAM AUTO_INCREMENT=1273355 DEFAULT CHARSET=latin1; 

Любое решение для быстрого ответа по каждому запросу?

наилучшие пожелания

+0

Хм ... нет ответов? – NinjaX

+1

lol быть терпеливым. 24 мин, и вы требуете ответа. Мы не работаем для вас. –

+0

и узнайте, как задать вопрос. Пожалуйста, прочитайте [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t И вот отличное место для [** START **] (http : //spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/), чтобы узнать, как улучшить качество вопроса и получить лучшие ответы. –

ответ

0

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

Я понятия не имею, что такое характеристики вашего сервера. Это должен быть довольно слабый сервер, потому что я провел тесты с полным текстовым индексом MySQL на 7,4 миллиона строк данных и запросил запросы за 16 миллисекунд. Это было на Macbook Pro, и реальный сервер должен быть еще быстрее.

См моего представления о полнотекстовом поиске в MySQL здесь: http://www.slideshare.net/billkarwin/practical-full-text-search-with-my-sql

+0

Я переключусь на эластичный поиск, это лучше ^^ – NinjaX

+0

Упругий поиск использует Lucene внутри, так же, как Solr. Таким образом, производительность и масштабируемость должны быть сопоставимы. –

Смежные вопросы