SQL语句的索引

问题描述 投票:0回答:1

例如,对于学习SQL只是陌生的,只是想知道索引如何工作(主键以粗体显示:]

  • 酒店(酒店号,酒店名称,城市),
  • 房间(房间号,酒店号,类型,价格),
  • 预订(酒店号,客人号,dateFrom,dateTo,roomNo),
  • 访客(guestNo,guestName,guestAddress)

查询:

SELECT 
    r.roomNo, r.type, r.price 
FROM 
    Room r, 
    Booking b, Hotel h 
WHERE 
    r.roomNo = b.roomNo 
    AND b.hotelNo = h.hotelNo 
    AND h.hotelName = "Hilton" 
    AND r.price > 200

有人可以解释我将如何使用任何索引来提高查询性能吗?我当时只是想按价格对它进行排序,这样SQL Server不必手动检查每一行,但是还应该建立其他索引吗?另外,主键是否总是聚集索引?

sql database-indexes
1个回答
0
投票

我不会直接回答您的问题,但是会尝试给出一个总体思路,以便您可以根据应用程序的用例(可能会有所不同)来提高数据库查询性能:

  • 无需在主键上建立索引
  • 关于那些字段的索引,这些字段可能/将需要频繁地在数据库中搜索/查询。
  • 在索引任何列时,请尝试确保列的值不那么丰富(尽管不太重要)
  • 尝试在多列上建立索引,如果完成,则无需在单个列中建立索引
  • 必须在查询中保留where子句之后的索引顺序,否则结果将对db产生负面影响。
  • 此外,请记住,索引编制也会占用您的数据库空间!好的索引编制可以帮助提高性能,而差的索引编制会使您的系统崩溃。

有关其他注释,您可以检查此链接What columns generally make good indexes?

快乐索引!

© www.soinside.com 2019 - 2024. All rights reserved.