簡體   English   中英

如何索引我的SQL表?

[英]How can I index my SQL table?

我有兩個表,第一個表叫做Hotel,包含以下幾列:

hotelID, AverageRating, OverallRating, URL

第二個稱為“評論”,其中包含:

hotelID, Author, Content, Date, No. Reader, No. Helpful, Overall, Value, Rooms, Location, Cleanliness, Checkin / front desk, Service, Business Service

我被要求根據查詢在表上創建相關索引。 這是我的四個查詢:

  • 查找同一用戶的所有評論(即,給定用戶ID,返回她所有評論的列表)。
  • 查找所有評論數大於2的用戶,並返回其名稱和評論的酒店數。
  • 查找所有評論數大於10的酒店。
  • 查找所有總體評分大於3且平均清潔度大於或等於5的酒店(注意:使用“總體評分”屬性)。

基於這些查詢,我需要索引以下列(我認為):

  • 作者
  • 綜合評分

我不需要索引清潔度,因為這是一個平均值,因此索引編制沒有任何好處。

作者列包含審閱者的用戶名。 例如Quoka7。 也許最好按字母索引此列?

TotalRating列包含1.0到5.0之間的一個十進制(至1 dp)。 例如3.5。 也許最好將此列索引為1 dp?

最后,為hotelID列建立索引對我來說是否有益? 基本上,其格式為hotel_ *,其中*是每個酒店的唯一編號。 根據我的查詢,我認為這沒有用。

謝謝您的寶貴時間,如果您有任何疑問或需要更多信息,我會在這里。

更新

作者也可以以數字開頭,因此也許字母並不理想。

您可以使用CREATE INDEX <nameOfIndex> ON <nameOfTable> (<field>,<field>,...);在SQL中CREATE INDEX <nameOfIndex> ON <nameOfTable> (<field>,<field>,...); 一個或多個字段。

因此,對於第一個查詢, CREATE INDEX Authors ON Review (Author);

看看您是否可以自己做剩下的事情。 如果您遇到麻煩,請嘗試瀏覽我們提供的講義並詢問Google,您不能指望Stack Overflow會繼續為您完成很多大學課程。

首先,如果您有任何外鍵,則在這些外鍵中使用的任何列都絕對應該被索引。 通常,在關系的一側有一個主鍵,在關系的另一側有一個普通索引。

關於要索引的列,對此沒有正確或正確的答案。 首先查看要對數據執行哪些查詢。 如果您將hotelID列用於大量查詢,請為其建立索引。

您還可以計時查詢運行的時間,然后查看索引是否對時間產生影響。 如果索引降低了速度,那么您可以保留它!

至於索引類型,SQLite沒有特定的索引類型(如注意這里 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM