2016-09-27 50 views
1

我通过CodeIngiter尝试进行查询上尽可能快地通过搜索在包含大约记录1.200.000表...如何快速非常大的数据库

我已经创建的名称,标签3项指标和类别

*/ 

SET FOREIGN_KEY_CHECKS=0; 

-- ---------------------------- 
-- Table structure for videos 
-- ---------------------------- 
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 `mega_search` (`name`,`tags`,`categories`) 
) ENGINE=MyISAM AUTO_INCREMENT=1273355 DEFAULT CHARSET=latin1; 

但响应太长=> 总执行时间7.0999此查询

SELECT * 
FROM `videos` 
WHERE `categories` LIKE '%Reality%' ESCAPE '!' 
ORDER BY `id` DESC 
LIMIT 20 
+1

'LIKE '%现实%''不能使用索引,并会在大大慢规模。请参阅https://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html,或者使用类似于Lucene的索引。 – ceejayoz

+0

120万行几乎不能称为一个非常大的数据库 – Lamak

+1

@Lamak当你在做'LIKE'%Reality%''时,任何事情都是大型数据库:-p – ceejayoz

回答