表結構:如何來確定正確的索引MySQL表
Column Type Null Default
id bigint(20) No
title varchar(255) Yes NULL
category_id int(11) Yes NULL
street varchar(255) Yes NULL
city varchar(255) Yes NULL
state_code varchar(255) Yes NULL
zip varchar(11) Yes NULL
phone varchar(255) Yes NULL
website varchar(255) Yes NULL
rating varchar(5) Yes NULL
hours text Yes NULL
country varchar(255) Yes NULL
tags text Yes NULL
email varchar(255) No
Address varchar(255) Yes NULL
SecondaryPhone varchar(255) Yes NULL
ProductsServices text Yes NULL
Specialties text Yes NULL
BrandsCarried text Yes NULL
PaymentMethods text Yes NULL
edit_title varchar(255) Yes NULL
subcategory_id int(11) Yes NULL
edit_street varchar(255) Yes NULL
edit_city varchar(255) Yes NULL
state varchar(255) Yes NULL
edit_state_code varchar(255) Yes NULL
edit_country varchar(255) Yes NULL
edit_phone varchar(255) Yes NULL
your varchar(255) Yes NULL
edit_hours varchar(255) Yes NULL
edit_email varchar(255) Yes NULL
image varchar(255) Yes NULL
banner varchar(255) Yes NULL
alias_name varchar(255) Yes NULL
user_id int(11) Yes NULL
about_us text Yes NULL
status varchar(1) Yes 0
featured varchar(1) Yes 0
views int(11) Yes 0
your_name varchar(255) Yes NULL
your_email varchar(255) Yes NULL
contact_no varchar(255) Yes NULL
time_to_contact varchar(255) Yes NULL
request_sent varchar(255) Yes NULL
edit_website varchar(255) Yes NULL
edit_tagline varchar(255) Yes NULL
tagline varchar(255) Yes NULL
edit_tags varchar(255) Yes NULL
national_level varchar(1) Yes 0
edit_about_us text Yes NULL
about_us_status varchar(1) Yes 0
plan_status varchar(1) Yes 1
served_city varchar(255) Yes NULL
created datetime Yes NULL
modified datetime Yes NULL
SQL查詢:
EXPLAIN SELECT `Business`.`id`, `Business`.`alias_name`, `Business`.`title`,
`Business`.`city`, `Business`.`state_code`, `Business`.`image`, `Business`.`about_us`,
`Business`.`tagline`, `Business`.`phone`, `Business`.`website`, `Business`.`email`
FROM `fp_businesses_jtest1` AS `Business`
WHERE ((((`Business`.`title` LIKE '%Flower Cottage of Landrum%') OR (`Business`.`tagline` LIKE '%Flower Cottage of Landrum%') OR (MATCH (`Business`.`tags`) AGAINST ("Flower Cottage of Landrum" IN BOOLEAN MODE)))) AND (((FIND_IN_SET('Scarborough',`Business`.`served_city`)) OR (`Business`.`city` LIKE 'Scarborough%'))))
ORDER BY `Business`.`modified` DESC;
結果
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE Business ALL fusedindex1 NULL NULL NULL 0 Using where; Using filesort
新的SQL查詢:我已刪除從where子句中類似並添加全部在matach &針對列。
SELECT `Business`.`id`, `Business`.`alias_name`, `Business`.`title`, Business`.`city`, `Business`.`state_code`, `Business`.`image`, `Business`.`about_us`, Business`.`tagline`, `Business`.`phone`, `Business`.`website`, `Business`.`email` FROM `fp_businesses_jtest1` AS `Business` WHERE (MATCH `Business`.`tags`,`Business`.`title`,`Business`.`tagline`) AGAINST ("Flower Cottage of Landrum" IN BOOLEAN MODE)) AND (MATCH (`Business`.`served_city`,`Business`.`city`) AGAINST("Scarborough" IN BOOLEAN MODE)) ORDER BY `Business`.`modified` DESC
任何人都可以請諮詢我如何識別索引和優化表。
用於索引的一般經驗法則:涉及「join」,「where」或「order by」的任何字段都應該有一個索引。 –