更新时间:2025-10-11 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
DELETE
功能描述
删除HStore opt表中的数据。
注意事项
- 如果需要删除表上的所有数据,建议使用TRUNCATE语法,可以有效提高性能同时减少空间膨胀。
 - HStore opt表上的单条DELETE操作,会往Delta中插入一条type是D的记录,同时再更新内存更新链用于管理并发。
 - HStore opt表上的批量DELETE操作,对于每个CU上的连续delete,会插入一条type是MD的记录。
 - 对于并发DELETE场景, 传统列存储格式由于同时操作相同CU时会阻塞所以并发性能较差, 对于HStore opt表由于不需要阻塞等待,并发DELETE性能可达到列存的百倍以上。
 
语法格式
         1 2 3  | 
        
         DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ] [ USING using_list ] [ WHERE condition ]  | 
       
参数说明
- ONLY
     
如果指定ONLY则只有该表被删除;如果没有声明,则该表和它的所有子表将都被删除。
 - table_name
     
目标表的名字(可以有模式修饰)。
取值范围:已存在的表名。
 - alias
     
目标表的别名。
取值范围:字符串,符合标识符命名规范。
 - using_list
     
using子句。
 - condition
     
一个返回boolean值的表达式,用于判断哪些行需要被删除。
 
示例
    创建表reason_t2: 
    
     
      
       
        
     
    
   
   
          1 2 3 4 5 6 7  | 
         
          CREATE TABLE reason_t2 ( TABLE_SK INTEGER , TABLE_ID VARCHAR(20) , TABLE_NA VARCHAR(20) )WITH(ORIENTATION=COLUMN, ENABLE_HSTORE_OPT=ON); INSERT INTO reason_t2 VALUES (1, 'S01', 'StudentA'),(2, 'T01', 'TeacherA'),(3, 'T02', 'TeacherB');  | 
        
    使用WHERE条件删除: 
    
     
      
       
        
     
    
   
   
          1 2  | 
         
          DELETE FROM reason_t2 WHERE TABLE_SK = 2; DELETE FROM reason_t2 AS rt2 WHERE rt2.TABLE_SK = 2;  | 
        
    使用IN语法删除: 
    
     
      
       
        
     
    
   
  
          1
           | 
         
          DELETE FROM reason_t2 WHERE TABLE_SK in (1,3);  |