如果数据量很大,下述sql应该把哪些字段建立为索引 ? sql: select wo.*,d.union_id,d.village from workflow_order as wo inner join document as d on wo.object_id = d.document_id where wo.status != 3 and d.process_id = 2
时间: 2024-01-07 07:06:12 浏览: 22
在这个SQL语句中,应该将以下字段建立索引:
- workflow_order表的status字段,因为它是一个筛选条件,使用索引可以加速查询。
- document表的process_id字段,因为它也是一个筛选条件,使用索引可以加速查询。
- document表的document_id字段,因为它是与workflow_order表的object_id字段进行关联的字段,使用索引可以加速查询。
另外,如果village和union_id字段也经常用于查询,也可以考虑对它们建立索引。但是,建立索引也会有额外的存储和更新成本,因此需要根据实际情况进行权衡和优化。
相关问题
如果数据量很大,下述sql应该把哪些字段建立为索引 ? sql: select workflow_order_id from workflow_record where handle_result = 1 and workflow_id = 1470275488528011266
根据该 SQL 语句的特点,应该将 handle_result 和 workflow_id 这两个字段建立索引。
原因如下:
1. SQL 语句中有两个过滤条件,即 handle_result = 1 和 workflow_id = 1470275488528011266,如果这两个字段没有索引,那么查询时需要进行全表扫描,查询效率非常低下。
2. workflow_order_id 字段是查询结果,不需要建立索引。
因此,为了提高查询效率,应该将 handle_result 和 workflow_id 这两个字段建立索引。
编成实现下述功能:。 输入你的出生年份,由出生年月推算你的年龄。。输出信息及格式如下: *************************** 姓名:***年龄: ** 系别: ****. ***************************。
好的,下面是实现该功能的C语言代码:
```c
#include <stdio.h>
#include <time.h>
int main()
{
int birth_year, birth_month, age;
char name[20], department[20];
time_t t = time(NULL);
struct tm tm = *localtime(&t);
printf("请输入您的姓名:");
scanf("%s", name);
printf("请输入您的出生年份和月份(格式:xxxx xx):");
scanf("%d%d", &birth_year, &birth_month);
age = tm.tm_year + 1900 - birth_year;
if (tm.tm_mon + 1 < birth_month) {
age--;
}
printf("***************************\n");
printf("姓名:%s\n", name);
printf("年龄:%d\n", age);
printf("系别:%s\n", department);
printf("***************************\n");
return 0;
}
```
该程序会通过本地时间获取当前年份和月份,并根据用户输入的出生年份和月份计算出当前年龄。用户还需要输入自己的姓名和所在系别。程序会按照指定格式输出用户的信息。