2015-11-19 44 views
0

我們正在研究一個數據庫,其中有大量的問題,所以我有這個列的「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成Questio NID是這樣的:

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';

任何更好的想法,將不勝感激。

回答

2

絕對沒有理由合併列。列應該包含一個「單一」值,而不是一些複雜的代碼,這些代碼很難理解。

對於此查詢:

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

你想上QTable(BookID, BookSeason, QuestionType)的索引。相同的索引將起作用,只需要尋找BookIdBookIdBookSeason

+0

感謝您的回答, 但我想知道哪一個**性能更好**在查詢 –

+0

@KyleMarriot。 。 。在三個鍵上使用相等的索引查找與一個鍵的索引查找幾乎具有相同的性能。它可以以任何一種方式,但我猜想3個整數比較比一個字符串比較更快,因爲排序問題。 –