I have **1.5M** rows in a table. Following is the table create code: CREATE TABLE `jobs` ( `id` INT(8) NOT NULL AUTO_INCREMENT, `job_id` VARCHAR(50) NOT NULL DEFAULT '', `title` VARCHAR(255) NOT NULL DEFAULT '', `company` VARCHAR(255) NOT NULL DEFAULT '', `city` VARCHAR(50) NOT NULL DEFAULT '', `state` VARCHAR(50) NOT NULL DEFAULT '', PRIMARY KEY (`id`), UNIQUE INDEX `job_id` (`job_id`), FULLTEXT INDEX `search` (`title`, `company`, `city`, `state`) ) COLLATE='utf8_general_ci' ENGINE=MyISAM The query below takes about **0.3** seconds, which is very high. SELECT id, title, company, state, city FROM `jobs` WHERE MATCH (title, company, state, city) AGAINST ('senior software engineer in san fransisco california') LIMIT 0,10 **How can I decrease execution time and still provide relevant results? Any suggestions?** So far I tried followings but there is no improvement at all. - Searching in a single field that contains 4 field of data but it did not matter. - Using in Boolean mode>1 or >2, but then it gives me unrelated results - Repairing the table, increasing key_buffer_size to 1GB from 16MB, changing table type to Innodb, changing character set to latin1 from utf8. - Setting ft_max_word_len=1 and ft_stopword_file='' from default values. - I searched online for many hours but no luck so far. "Explain select..." output: id;select_type;table;type ;possible_keys;key ;key_len;ref;rows;Extra 1 ;SIMPLE ;jobs ;fulltext;search ;search;0 ;\N ;1 ;Using where **EDIT:** SHOW PROFILE OUTPUT: || *Status* || *Duration* || || starting || 0.000087 || || checking permissions || 0.000011 || || Opening tables || 0.000036 || || init || 0.000030 || || System lock || 0.000013 || || optimizing || 0.000010 || || statistics || 0.000021 || || preparing || 0.000008 || || FULLTEXT initialization || 0.276820 || || executing || 0.000010 || || Sending data || 0.000155 || || end || 0.000008 || || query end || 0.000004 || || closing tables || 0.000016 || || freeing items || 0.000703 || || cleaning up || 0.000018 ||