2016-09-27 51 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

回答