数据库创建索引的建议

一、数据库索引创建规则

 

1、表的主键、外键必须有索引;
2、数据量超过300的表应该有索引;
3、经常与其他表进行连接的表,在连接字段上应该建立索引;


4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
5、索引应该建在选择性高的字段上;
6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;

 

 

 

二、一般不选择具有这些特点的列上创建索引

 

1. 对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查 询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求;

 

2. 不要在有大量相同取值的字段上,建立索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加 快检索速度;

 

3. 对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少;
 
参考资料:    数据库创建索引的注意事项   http://www.studyofnet.com/news/449.html
 
### 达梦数据库创建级联索引的方法 在达梦数据库中,级联索引通常用于优化涉及外键关系或多表关联的查询性能。通过合理设计和应用级联索引,可以显著提升复杂查询的速度。以下是关于如何在达梦数据库创建级联索引的具体方法以及示例。 #### 1. 索引的基础概念 索引是一种特殊的查找表,它能够加速对数据库表中特定列的搜索速度。对于多表之间的关联查询,可以通过在外键字段上建立索引来实现更高效的连接操作[^1]。 #### 2. 创建级联索引的前提条件 为了创建有效的级联索引,需满足以下前提条件: - 表之间存在明确的关系定义(通常是主从表或父子表)。 - 外键字段已正确定义并被频繁用于 JOIN 查询。 - 数据量较大时,索引的效果更加明显。 #### 3. 创建级联索引的 SQL 示例 假设有一个订单管理系统,其中包含两个主要表格 `orders` 和 `order_details`: ```sql -- 建立 orders 表 CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT NOT NULL, order_date DATE NOT NULL ); -- 建立 order_details 表,并设置外键约束 CREATE TABLE order_details ( detail_id INT PRIMARY KEY, order_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, FOREIGN KEY (order_id) REFERENCES orders(order_id) ); ``` 接下来,在 `order_details.order_id` 字段上创建索引以支持基于父表 `orders` 的快速检索: ```sql -- 在子表中的外键字段上创建索引 CREATE INDEX idx_order_details_order_id ON order_details(order_id); ``` 如果需要进一步提高效率,还可以考虑组合多个字段来构建复合索引: ```sql -- 创建复合索引,覆盖更多可能的查询场景 CREATE INDEX idx_order_details_combined ON order_details(order_id, product_id); ``` 上述例子展示了如何针对常见的业务需求配置合适的索引策略[^3]。 #### 4. 验证索引效果 完成索引创建之后,建议运行 EXPLAIN PLAN 或其他诊断工具查看实际执行计划是否利用到了新加入的索引结构。这一步骤有助于确认所做调整的实际价值所在。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值