【发布时间】:2020-05-27 12:08:16
【问题描述】:
刚开始学习 SQL,只是想知道索引是如何工作的,例如(主键为粗体):
- 酒店(hotelNo,hotelName,城市),
- 房间(roomNo,hotelNo,类型,价格),
- Booking (hotelNo, guestNo, 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,为什么不学习正确的、明确的、标准的
JOIN语法? -
ALTER TABLE Room ADD INDEX price_index (price) -
@SALEH 你能解释一下你的意思吗?另外,我们如何证明我们应该索引某些东西?还是只是常识?
-
我假设您使用
mysql作为数据库。上面的 DML 在 mysql 中的表的列上创建一个新索引。确定向表添加索引的必要性取决于多种因素。索引的标准可以是预期某个读取查询会在表上更频繁地执行。在这种情况下,最好为这些查询制定一些索引策略。在这种情况下,索引的理想候选者是在该查询的where子句中使用其值的列 -
您可以查看here 以获得更多见解。这是一个相当普遍的话题。 Google 搜索会为您提供更有用的结果
标签: sql database-indexes