`
lorry1113
  • 浏览: 263200 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

删除feature的几种方法,性能

    博客分类:
  • GIS
 
阅读更多
1、IFeatureCursor 游标查询后,遍历删除

2、更新游标删除IFeatureCursor.DeleteFeature()

3、ITable.DeleteSearchedRows删除

4、 IDataset.Workspace.ExecuteSQL

一、  几种删除方法代码

1.  查询结果中删除

 
private void Delete1(IFeatureClass PFeatureclass)
        {
            IQueryFilter pQueryFilter = new QueryFilterClass();
            pQueryFilter.WhereClause = "objectID<=" + DeleteNum;
            IFeatureCursor pFeatureCursor = PFeatureclass.Search(pQueryFilter, false);            IFeature pFeature = pFeatureCursor.NextFeature();
            while (pFeature != null)
            {
                pFeature.Delete();
                pFeature = pFeatureCursor.NextFeature();
            }
            System.Runtime.InteropServices.Marshal.ReleaseComObject(pQueryFilter);
        }
2.  更新游标删除
private void Delete2(IFeatureClass PFeatureclass)
        {
            IQueryFilter pQueryFilter = new QueryFilterClass();
            pQueryFilter.WhereClause = "objectID<=" + DeleteNum;
            IFeatureCursor pFeatureCursor = PFeatureclass.Update(pQueryFilter, false);
            IFeature pFeature = pFeatureCursor.NextFeature();
            while (pFeature != null)
            {
                pFeatureCursor.DeleteFeature();
                pFeature = pFeatureCursor.NextFeature();
            }
            System.Runtime.InteropServices.Marshal.ReleaseComObject(pQueryFilter);
        }
3.  使用DeleteSearchedRows删除
private void Delete4(IFeatureClass PFeatureclass)
        {
            IQueryFilter pQueryFilter = new QueryFilterClass();
            pQueryFilter.WhereClause = "objectID<=" + DeleteNum;
            ITable pTable = PFeatureclass as ITable;
            pTable.DeleteSearchedRows(pQueryFilter);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(pQueryFilter);
        }
4.  ExecuteSQL删除
private void Delete4(IFeatureClass PFeatureclass)
        {
            IDataset pDataset = PFeatureclass as IDataset;
            pDataset.Workspace.ExecuteSQL("delete from " + PFeatureclass.AliasName + " where objectid<=" + DeleteNum);
        }
二、  测试性能和比较
1、       相同的数据条件,删除2000条记录

2、       测试代码

IFeatureLayer pFeatureLayer = axMapControl1.Map.get_Layer(0) as IFeatureLayer;
            IFeatureClass PFeatureClass = pFeatureLayer.FeatureClass;
            System.Diagnostics.Stopwatch MyWatch = new System.Diagnostics.Stopwatch();
            MyWatch.Start();
            Delete1(PFeatureClass)
            //Delete2(PFeatureClass);
            //Delete3(PFeatureClass);
            //Delete4(PFeatureClass);
            //Delete5(PFeatureClass);
            MyWatch.Stop();
            MessageBox.Show("删除时间:" + MyWatch.ElapsedMilliseconds.ToString() + "毫秒");

3、       测试情况测试方法
第一次时间(单位ms)
第一次时间(单位ms)
1
5214ms
5735ms

2
299ms
290Ms

3
59ms
28ms

4
26ms
26ms

三、  结论


1、         使用ExecuteSQL删除最快,数据库的效率最高。



2、         DeleteSearchedRows和ExecuteSQL属于批量删除,性能较优。



3、         查询结果中删除,速度最慢,如果你使用这种方法,建立你马上修改你的程序,因为你在浪费时间。

4、 

     小数据量记录数小于500000条,请使用DeleteSearchedRows或ExecuteSQL,否则使用更新游标删除(方法2),加上进度条,这样界面很友好。


分享到:
评论

相关推荐

    Simple Filter Feature Selection Algorithms_front1el_algorithms_f

    "Simple Filter Feature Selection Algorithm" 可能包括以下几种常见的策略: 1. 单变量统计测试:如皮尔逊相关系数、卡方检验、互信息等,这些方法衡量特征与目标变量之间的线性或非线性关系。 2. 方差阈值:删除...

    feature engineering.zip

    书里会介绍这两种方法的计算过程及其应用场景。 7. **特征缩放**:在某些机器学习算法中,特征的尺度很重要,如支持向量机和神经网络。书中可能涉及PCA、t-SNE等降维技术,以及特征缩放的重要性。 8. **示例代码**...

    Different metaheuristic strategies to solve the feature selectio

    5. **顺序前向浮动选择 (Sequential Forward Floating Selection, SFFS)** 和 **顺序后向浮动选择 (Sequential Backward Floating Selection, SBFS)**:这些是基于贪心策略的方法,逐步添加或删除特征,同时考虑添加...

    Hybrid Genetic Algorithms for Feature Selection

    遗传算法(Genetic Algorithm, GA)是一种模拟生物进化过程的全局优化方法,它通过模拟自然选择和遗传机制来探索解决方案空间。然而,单纯的基本遗传算法在解决特征选择问题时可能面临收敛速度慢、容易陷入局部最优...

    Feature-Engg

    Jupyter Notebook是一种交互式计算环境,允许用户结合代码、文本、数学公式和可视化来探索数据。 特征工程的目标是提取数据中的有价值信息,去除噪声,并创建能够提升模型性能的新特征。这个过程通常包括以下几个...

    matlab 特征选择 - 副本 (2).rar

    特征选择的方法主要有以下几种: 1. **过滤式(Filter Methods)**:这种方法通过统计检验或者相关性分析,对每个特征与目标变量之间的关系进行评分,然后根据评分结果选择特征。例如,皮尔逊相关系数可以衡量连续...

    arcglobe里面graphicstrack应用

    在ArcGIS系统中,为了实现实时数据的快速更新与显示,针对动态目标的追踪提出了几种不同的解决方案。这些方案包括使用`GraphicTracker`管理跟踪目标、采用动态图形或动态地图图层以及利用时域特征层。 ##### (一)...

    论文研究-多源空间要素服务系统的设计与实现.pdf

    在地理信息系统中,WFS(Web Feature Service)是OpenGIS的一种规范,它允许用户通过Internet获取、编辑或删除地理数据的信息。WFS使用GML(Geography Markup Language)进行数据交换,GML是一种基于XML的标记语言,...

    yolov论文-改进YOLOv5s的复杂交通场景路侧目标检测算法

    为了改善这一情况,研究者引入了轻量级的通用上采样算子CARAFE (Content-Aware Attentional Feature Upsampling),它能更好地保留特征信息,从而提高检测性能。 3. **多尺度检测层**:原有的YOLOv5s采用三尺度检测...

    显著性检测的经典算法代码.zip

    本压缩包包含了几个经典的显著性检测算法的MATLAB实现,包括Itti模型、SR(Seam Carving)、FT(Feature Integration Theory)以及GBVS(Guided Backward/Forward Selection)。以下将对这些算法进行详细阐述。 1. ...

    SVMRFE_过拟合_SVMrfe_特征筛选_分类算法_matlab.zip

    4. **RFE(Recursive Feature Elimination)**: RFE是一种特征选择方法,它基于模型的性能反向消除特征。首先,构建一个初始模型,然后按照特征的重要性排名,依次删除最不重要的特征,重复此过程,直到达到预设的...

    8-1高效且有效的实用目标检测技术.pdf

    DropBlock是一种正则化方法,它通过随机“删除”一部分激活值来防止特征图中的过拟合,从而增强模型的泛化能力。此外,针对损失函数的优化,PP-YOLO采用了IoU Loss的不同变体,如IoU-aware和IoU-in IoU-out,这些...

    深度解析:DeepSORT算法全景流程与实现

    这种结合了深度学习的强大特征提取能力和传统跟踪算法的实时性与简洁性的方法,使得DeepSORT能够在复杂多变的环境中保持较高的跟踪性能。 #### 一、DeepSORT算法全景流程 **1. 目标检测(Detection)** DeepSORT...

    Machine Learning 10 algorithms

    剪枝通过对树中的一些分支进行删除来简化模型,这样可以提高模型在新数据上的性能。 2. Improved Use of Continuous Attributes(连续属性的改进使用):C4.5算法在处理连续属性(比如温度、湿度等)时,能够有效地...

    cfs.rar_CFS聚类_announced1vd_cfs聚类算法_python_python 聚类

    CFS(Correlation-based Feature Selection,基于相关性的特征选择)是一种经典的特征选择方法,它主要应用于数据挖掘和机器学习领域,用于减少数据集中的特征数量,从而提高模型的效率和性能。CFS算法的核心思想是...

    Menu(菜单) for javascript and dom

    10. 兼容性和性能优化:考虑到不同浏览器的兼容性问题,使用feature detection(特性检测)而不是user agent sniffing(用户代理嗅探)来确定功能是否可用。同时,通过缓存DOM查询结果、避免频繁操作DOM等方法来优化...

    电信设备-基于点特征直方图的移动场景点云精简算法.zip

    点特征直方图(Point Feature Histograms, PFH)是一种常用的方法,用于描述3D点云数据中的几何特征。在移动场景中,如无人机或自动驾驶车辆的环境感知,点云数据的精简处理至关重要,因为它可以减少计算量,提高...

    Geodatabase高效编程(pdf)

    主要有以下几种类型: - **搜索游标(SearchCursor)**: 用于查询和检索数据。 - **更新游标(UpdateCursor)**: 用于更新现有数据。 - **插入游标(InsertCursor)**: 用于批量插入数据。 - **自定义查询游标...

    2017-03-WebGIS-前端开发技术2

    根据给定文件的信息,我们可以提炼出以下几个主要的知识点: ### 1. JavaScript 常用事件 JavaScript 中的事件是用来捕获用户或浏览器的行为的一种机制。这些行为包括但不限于点击、键盘输入、页面加载等。了解并...

    Machine Learning tools inside Matlab

    - **顺序特征选择 (sequential feature selection)**:通过迭代地添加或删除特征来优化模型性能。 - **逐步回归 (stepwise regression)**:一种特征选择技术,用于线性回归模型。 - **正则化 (regularization)**:如...

Global site tag (gtag.js) - Google Analytics