假设我有一张电影表:
+------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| title | tinytext | YES | | NULL | |
| synopsis | synopsis | YES | | NULL | |
| year | int(4) | YES | | NULL | |
| ISBN | varchar(13) | YES | | NULL | |
| category | tinytext | YES | | NULL | |
| author | tinytext | YES | | NULL | |
| theme | tinytext | YES | | NULL | |
| edition | int(2) | YES | | NULL | |
| search | text | YES | | NULL | |
+------------+---------------------+------+-----+---------+----------------+
在此示例中,我使用search
column 作为表格的摘要。因此,可能的记录如下:
+------------+-------------------------------------------------------------+
| Field | Value |
+------------+-------------------------------------------------------------+
| id | 1 |
| title | Awesome Book |
| synopsis | This is a cool book with a cool history |
| year | 2013 |
| ISBN | 1234567890123 |
| category | Horror |
| author | John Doe |
| theme | Programmer goes insane |
| edition | 2nd |
| search | 2013 horror john doe awesome book this is a cool book (...) |
+------------+---------------------+------+-----+---------+----------------+
此列search
将是搜索时扫描的列。请注意,它包含其他字段的所有单词(小写),可能还有一些额外的单词来帮助搜索。
我有两个问题:
1)知道该列是一个文本字段并且可以变得非常大,是否可以对其进行索引?它会按预期提高性能吗?为什么?
2)尽管有索引,但使用这种方法进行搜索是个好主意,还是最好尝试查询查询中的每一列?我该如何改进它?
OBS:我真的没有这张表,只是为了举例。请忽略我可能所做的数据类型或语法中的任何错误。