我们正在研究一个包含大量问题的考试系统数据库,所以我对这些专栏有“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'
;
任何更好的想法都将受到赞赏。
答案 0 :(得分:2)
绝对没有理由组合列。列应包含“单一”值,而不是一些难以理解的复杂代码。
对于此查询:
Select *
from QTable
where BookID = 5 and BookSeason = 11 and QuestionType = 2;
您需要QTable(BookID, BookSeason, QuestionType)
上的索引。只需查找BookId
或BookId
和BookSeason
即可使用相同的索引。