我们可以通过统一列来提高查询性能吗?

时间:2015-11-19 13:04:19

标签: mysql

我们正在研究一个包含大量问题的考试系统数据库,所以我对这些专栏有“QTable”:

QuestionNum | BookID | BookSeason | QuestionType 和...

考虑我们需要选择BookID = 5和BookSeason = 11且QuestionType = 2的一些问题

哪种想法更能提高查询效果:

1 - Select * from QTable where BookID=5 and BookSeason=11 and QuestionType=2;

2- 将BookID和BookSeason以及QuestionType统一到QuestionID中,如下所示:

QuestionID =“000000”(QuestionNum)+“000”(BookID)+“00”(BookSeason)+“0”(QuestionType)

QestionID的示例:“01253305112”(012533是QuestionNum,05是BookID,11是BookSeason,2是QuestionType)

现在用BookID = 5和BookSeason = 11以及QuestionType = 2选择一些问题的查询将是这样的:

Select * from QTable where QuestionID LIKE '------05112';

任何更好的想法都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

绝对没有理由组合列。列应包含“单一”值,而不是一些难以理解的复杂代码。

对于此查询:

Select * 
from QTable
where BookID = 5 and BookSeason = 11 and QuestionType = 2;

您需要QTable(BookID, BookSeason, QuestionType)上的索引。只需查找BookIdBookIdBookSeason即可使用相同的索引。