关于数据库的基础
单一索引:只是用某一列数据作为索引,默认是index索引,这一列可以包含重复数据;如果某一列不存在重复数据最好设置成unique形式的索引,比index的索引速度更快,在text数据上要使用fulltext索引。
联合索引:为了更进一步提高检索速度,每次检索都需要用多列同时进行时,就可以把这多列设为联合索引,提高索引速度,根据多列是否唯一,也分为index索引和unique索引。
三. 主键和索引总结
主键一定是索引,但是索引不一定是主键。
一个表只能有一个主键或联合主键,但是可以有多个索引。
主键字段必须不能为空,但是索引字段可以为空。
条件查询:C#查询语句
var productionlist = db.Queryable<dh_ops_gas_testing_mining_daily_001>()
.WhereIF(!startDate.Equals(DateTime.MinValue), s => s.DAILY_DATE >= startDate)
.WhereIF(!endDate.Equals(DateTime.MinValue), s => s.DAILY_DATE <= endDate)
.Where(s => s.WID == wid )
.ToList();
数据库内嵌查询语句
SELECT well_name, wid, daily_date, footage_day, footage_month, footage_month_plan, footage_year
FROM dr_ops_daily_001 AS t1
WHERE daily_date = (
SELECT MAX(daily_date)
FROM dr_ops_daily_001 AS t2
WHERE t2.well_name = t1.well_name AND YEAR(daily_date) = 2023
);
数据库分片导入:
List<List<ml_ops_wl_002>> listGroup = new List<List<ml_ops_wl_002>>();
db.Deleteable<ml_ops_wl_002>().ExecuteCommand();
int j = 1000;
for (int i = 0; i < bitUseInfoInput.Count; i += 1000) //以1000条为一组分组
{
List<ml_ops_wl_002> littleList = new List<ml_ops_wl_002>();
littleList = bitUseInfoInput.Take(j).Skip(i).ToList();
j += 1000;
listGroup.Add(littleList);
}
foreach (List<ml_ops_wl_002> lst in listGroup)
{
db.Insertable<ml_ops_wl_002>(lst).ExecuteCommand();
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
realDb.Queryable<dh_rtm_fra_001>().AS(tableName)
是一种使用 Dapper 执行 SQL 查询的方法。
在这个代码片段中,realDb
是一个数据库连接对象,.Queryable<dh_rtm_fra_001>()
是在该数据库连接上创建一个查询对象,并指定要查询的数据表类型为 dh_rtm_fra_001
。.AS(tableName)
则是将查询结果映射到指定的表名 tableName
上。
这种写法可以让 Dapper 将查询结果自动映射到指定的数据表类型或者表名对应的实体类对象中。这样,在执行查询后,你就可以直接通过实体类对象来访问和操作查询结果。
需要注意的是,为了使用这种写法,你需要在项目中引入 Dapper 库,并配置好数据库连接相关的代码。此外,dh_rtm_fra_001
必须是一个有效的数据表类型或者实体类类型,且 tableName
必须是一个有效的表名。