杂计

字段名   name  
              a 
              null 
             b
              null  
              a
select * from test group by name
结果为
     a
     null
      b 
想得到的是
      a 
     null
     null
     b 
SQL语句:

select name from test where name is not null group by name
union all
select name from test where name is null;

===================

在某些情况下,or条件可以避免全表扫描的。

1 .where 语句里面如果带有or条件, myisam表能用到索引, innodb不行。1)myisam表:
CREATE TABLE IF NOT EXISTS `a` (
  `id` int(1) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  `aNum` char(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `uid` (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

mysql> explain select * from a where id=1 or uid =2;
+----+-------------+-------+-------------+---------------+-------------+---------+------+------+---------------------------------------+
| id | select_type | table | type        | possible_keys | key         | key_len | ref  | rows | Extra                                 |
+----+-------------+-------+-------------+---------------+-------------+---------+------+------+---------------------------------------+
|  1 | SIMPLE      | a     | index_merge | PRIMARY,uid   | PRIMARY,uid | 4,4     | NULL |    2 | Using union(PRIMARY,uid); Using where |
+----+-------------+-------+-------------+---------------+-------------+---------+------+------+---------------------------------------+
1 row in set (0.00 sec)
 

2)innodb表:

CREATE TABLE IF NOT EXISTS `a` (
  `id` int(1) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  `aNum` char(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `uid` (`uid`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;


mysql>  explain select * from a where id=1 or uid =2;
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | a     | ALL  | PRIMARY,uid   | NULL | NULL    | NULL |    5 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)


2 .必须所有的or条件都必须是独立索引:+-------+----------------------------------------------------------------------------------------------------------------------
| Table | Create Table
+-------+----------------------------------------------------------------------------------------------------------------------
| a     | CREATE TABLE `a` (
  `id` int(1) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  `aNum` char(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 |
+-------+----------------------------------------------------------------------------------------------------------------------
1 row in set (0.00 sec)

explain查看:
mysql> explain select * from a where id=1 or uid =2;
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | a     | ALL  | PRIMARY       | NULL | NULL    | NULL |    5 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

全表扫描了。



3. 用UNION替换OR (适用于索引列)       通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描. 

       注意, 以上规则只针对多个索引列有效. 如果有column没有被索引, 查询效率可能会因为你没有选择OR而降低.

       在下面的例子中, LOC_ID 和REGION上都建有索引.
       高效:

 
  • select loc_id , loc_desc , region from location where loc_id = 10   
  • union   
  • select loc_id , loc_desc , region  from location where region = "melbourne"   

     低效: 
  • select loc_id , loc desc , region from location where loc_id = 10 or region = "melbourne"  
 

如果你坚持要用OR, 那就需要返回记录最少的索引列写在最前面.

4. 用in来替换or       这是一条简单易记的规则,但是实际的执行效果还须检验,在oracle8i下,两者的执行路径似乎是相同的. 
低效: 
select…. from location where loc_id = 10 or loc_id = 20 or loc_id = 30 
高效 
select… from location where loc_in  in (10,20,30);

 

 

 

转载于:https://my.oschina.net/u/3255899/blog/1499268

### 回答1: 电磁流量计是一种测量液体或气体流量的仪器,它利用电磁感应原理来测量流体通过管道的体积流量。电磁流量计信号处理是指对电磁流量计所产生的原始信号进行处理和分析,以得到准确的流量测量结果。 电磁流量计信号处理的过程包括信号采集、放大、滤波、线性化、补偿和输出等步骤。 首先,电磁流量计会通过其传感器采集到流体通过管道时所产生的电磁感应信号。这个信号是一个微弱的电流信号,需要经过放大的处理,以提高信号的灵敏度和稳定性。 接下来,信号会经过滤波处理,去除掉一些噪声和干扰,以保证测量结果的准确性。 然后,信号会经过线性化处理,将非线性的原始信号转化为线性响应,这样可以更加方便地进行数值计算和分析。 在信号处理过程中,还需要进行温度和压力的补偿,以消除环境因素对测量结果的影响。温度和压力的变化可能会导致信号的漂移和失真,因此需要进行补偿处理,以保证测量结果的准确性和稳定性。 最后,经过信号处理后的结果会输出给终端设备进行显示、记录或控制。可以根据需要将结果以模拟信号或数字信号的形式输出。 综上所述,电磁流量计信号处理是对电磁流量计所采集到的原始信号进行放大、滤波、线性化、补偿和输出等处理,以获取准确的流量测量结果。这个过程是关键的,可以提高测量的准确性和稳定性,广泛应用于工业自动化控制和流体检测领域。 ### 回答2: 电磁流量计信号处理主要指对电磁流量计采集的信号进行处理和分析,以获取准确的流量数据。流量计通过感应电磁场的变化来测量流体的流量,其原理是根据法拉第电磁感应定律,当导体(液体)在磁场中运动时,会在导体两端产生感应电动势,根据感应电动势的大小可推算出流体的流量。 电磁流量计的信号处理主要包括以下几个方面: 首先,信号采集。电磁流量计通过感应电极对流体中的电压信号进行采集,根据法拉第电磁感应定律,当导体在磁场中运动时,会产生感应电动势,通过电极接收到的电压信号可以获取导体的流速信息。 其次,信号放大与滤波。为了提高信号的稳定性和可靠性,对采集到的电压信号进行放大和滤波处理,消除噪声和杂散信号的干扰。放大和滤波处理可以提高信号的准确性和稳定性,保证测得的流量数据的可靠性。 然后,信号转换与处理。电磁流量计的信号需要进行转换和处理,将模拟信号转换为数字信号,并进行线性化处理,以便于后续的计算和分析。信号转换和处理可以校正非线性误差,提高测量精度和稳定性。 最后,信号输出与显示。经过信号处理后,电磁流量计的流量数据会通过各种接口进行输出,可以通过数显仪表、计算机等设备显示和记录流量数据,实现对流体流量的实时监测和控制。 综上所述,电磁流量计信号处理是通过采集、放大、滤波、转换和处理等环节,将电磁流量计的信号转化为可靠的流量数据,实现对流体流量的精确测量和控制。 ### 回答3: 电磁流量计信号处理PDF是指电磁流量计通过信号处理器对流量测量信号进行处理并输出结果的过程。电磁流量计是一种广泛应用于工业自动化领域的流量测量仪表,它通过测量液体在磁场中的电磁感应现象来实现流量的测量。 电磁流量计的信号处理主要包括以下几个步骤: 1. 信号采集:电磁流量计通过电极对流过的液体进行电磁感应,产生信号。这些信号经过放大电路和滤波电路后,进入信号处理器。 2. 信号处理:信号处理器对输入的电磁流量计信号进行放大、滤波、线性化等处理,以确保测量结果的准确性和稳定性。其中,放大和滤波可以提高信号的信噪比,线性化可以将非线性信号转化为线性信号,以便更好地进行流量计算。 3. 数字转换:经过信号处理后的模拟电流信号需要转换为数字信号,一般采用模数转换器(ADC)进行转换。转换后的数字信号可以更方便地进行数据处理和存储。 4. 流量计算:在信号处理后,根据电磁流量计的特性和测量原理,利用著名的方程式如法拉第定律等进行流量计算。计算结果可以通过显示器、通信接口等方式进行输出。 5. 故障诊断与报警:信号处理器还可以通过对输入信号的监测和分析,诊断流量计是否存在故障或异常情况,并在需要时发出报警信号,以保证流量测量的准确性和安全性。 信号处理是电磁流量计工作的关键环节,它能够对原始信号进行调整和优化,从而提高流量测量的精度和可靠性。通过PDF文档的方式可以更好地记录和传播信号处理的相关知识和技术,帮助工程师和用户更好地理解和应用电磁流量计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值