单一索引:只是用某一列数据作为索引,默认是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();
}