例如,我必须创建一个包含以下字段的表:
client_id (num)
local_id (num)
unit_id (char)
category (char)
first_product_date (date)
client_id
是独一无二的。所有字段都将用于连接,WHERE等。
请解释一下,使用索引的方法最好,为什么?
1)初级唯一+次要的其他
PRIMARY UNIQUE INDEX (client_dk)
SECONDARY INDEX (local_id, unit_id, category, first_product_date)
2)主要非独特+次要的其他
PRIMARY INDEX (client_dk)
SECONDARY INDEX (local_id, unit_id, category, first_product_date)
3)所有小学
PRIMARY INDEX (client_dk, local_id, unit_id, category, first_product_date)
4)初级中的次要独特+其他
PRIMARY INDEX (local_id, unit_id, category, first_product_date)
SECONDARY UNIQUE INDEX (client_dk)
5)其他任何方式?
THX!
答案 0 :(得分:0)
TD索引的一些注释:
您的主要索引是最重要的索引 - 根据以下内容选择:
1)访问 - 如何从表中访问数据
2)分布 - 数据的独特性 - > PI值哈希用于存储/定位行
3)波动性 - PI值经常变化的频率 - >减少数据重定位
理想情况下,您需要一个唯一索引,但这实际上取决于计划访问数据的方式。拥有非唯一索引并不一定是坏事。
要定位特定问题查询和表格,您可以尝试:
1)使用DIAGNOSTIC HELPSTATS FOR SESSION查看特定查询的推荐统计数据。对您的查询运行EXPLAIN,您将获得一些统计信息收集提示。
2)玩连接索引。
3)如前所述,二级索引并不总是非常有用。所以不要在整个地方创造它们。
和前面的人一样,弄清楚所有表格之间的关系以及您计划询问数据的问题类型。这将决定你的指数选择。