有人可以告诉我是否使用以下SQLite语句..
CREATE TABLE products (
category_id INT NOT NULL, /* foreign key on `categories` */
product_id TEXT NOT NULL, /* must be string, unique only within a category */
info TEXT,
PRIMARY KEY (category_id, product_id) /* our PK */
) WITHOUT ROWID
...如果我仍然应该构建以下索引
CREATE INDEX products_by_category_id
ON products(category_id)
CREATE INDEX products_by_product_id
ON products(product_id) /* not sure I need this one at all */
或者由于CREATE TABLE
答案 0 :(得分:1)
是的,这是多余的。
可以从左到右使用索引列。例如。 PK索引可以单独与category_id
或category_id
和product_id
一起使用。因此,category_id
上的索引无效,而product_id
上的索引可能非常有用,如果您的查询过滤product_id
而不是category_id
。