我有两个表,第一个名为Hotel,包含以下列:
hotelID, AverageRating, OverallRating, URL
第二个名为Review,包含:
hotelID, Author, Content, Date, No. Reader, No. Helpful, Overall, Value, Rooms, Location, Cleanliness, Checkin / front desk, Service, Business Service
我被要求根据查询在表格上创建相关索引。以下是我的四个问题:
基于这些查询,我需要索引以下列(我认为):
我不需要对清洁度进行索引,因为这是一个平均值,因此索引将没有任何好处。
“作者”列包含审阅者的用户名。例如,Quoka7。是否最好按字母表对该列进行索引?
OverallRating列包含介于1.0和5.0之间的小数(至1 d.p)。例如,3.5。是否最好将此列索引到1 d.p?
最后,对hotelID列编制索引对我有好处吗?这基本上具有hotel_ *格式,其中*是每个酒店的唯一编号。根据我的疑问,我认为这不会有用。
感谢您的时间,如果您有任何疑问或需要更多信息,我就在这里。
更新
作者也可以从一个数字开始,所以也许字母不理想。
答案 0 :(得分:2)
您在SQL中创建一个带有CREATE INDEX <nameOfIndex> ON <nameOfTable> (<field>,<field>,...);
的索引,其中包含一个或多个字段。
首先查询CREATE INDEX Authors ON Review (Author);
看看你是否可以自己完成剩下的工作。如果您遇到困难,请尝试查看我们给出的演讲幻灯片并询问Google,您不能指望Stack Overflow继续为您完成大量的课程作业。
答案 1 :(得分:1)
首先,如果你有任何外键,那么在这些中使用的任何列都应该被绝对索引。 通常,您在关系的一侧有一个主键,在关系的另一侧有一个普通的索引。
关于您要索引的列,没有正确或正确的答案。
首先查看您要对数据执行哪些查询。如果您使用hotelID
列进行大量查询,请将其编入索引。
您还可以计算查询运行的时间,然后查看索引是否会影响时间。 如果索引降低速度,那么你可以保留它!
关于索引类型,SQLite没有特定的索引类型(如上所述here)。