Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 检查的行数如何大于表中的行数?_Mysql - Fatal编程技术网

Mysql 检查的行数如何大于表中的行数?

Mysql 检查的行数如何大于表中的行数?,mysql,Mysql,我有一张审计桌。我使用此查询获取当前登录的用户数。但是,在过去的几天里,这个查询需要很长时间。在“从慢速查询日志分析”上,检查的行数太长 当天表上的行总数为6032194( ) 查询 select count(user_id) from audit where audit.created_time between UNIX_TIMESTAMP(CURRENT_DATE() - INTERVAL 3 DAY) * 1000 AND UNIX_TIMESTAMP(CURRENT_D

我有一张审计桌。我使用此查询获取当前登录的用户数。但是,在过去的几天里,这个查询需要很长时间。在“从慢速查询日志分析”上,检查的行数太长

当天表上的行总数为
6032194
(

)

查询

    select count(user_id) from audit where audit.created_time 
between  UNIX_TIMESTAMP(CURRENT_DATE()  - INTERVAL 3 DAY) * 1000  AND 
UNIX_TIMESTAMP(CURRENT_DATE()-INTERVAL 2 day) * 1000 
and operation in ('s','g','y','fb');
解释输出

         id: 1
  select_type: SIMPLE
        table: audit
         type: range
possible_keys: IAMAccountAudit_CTndx
          key: IAMAccountAudit_CTndx
      key_len: 9
          ref: NULL
         rows: 16434866
        Extra: Using where
它正在作为范围查询执行。但它检查
86158436

慢速查询日志:

    # Time: 130216  1:09:21
# User@Host: root[root] @  [bharathik]
# Query_time: 1853.751416  Lock_time: 0.000101 Rows_sent: 1  Rows_examined: 86158436
SET timestamp=1361005761;
    SELECT UNIX_TIMESTAMP(CURRENT_DATE()  - INTERVAL 1 DAY) * 1000, 'SIGNIN', 0, count(distinct(zuid)) as SIGN_IN_COUNT from audit where  audit.CREATED_TIME BETWEEN 
UNIX_TIMESTAMP(CURRENT_DATE()  - INTERVAL 3 DAY) * 1000  AND 
UNIX_TIMESTAMP(CURRENT_DATE()-INTERVAL 2 day) * 1000
创建表格

+-----------------------+--------------+------+-----+---------+-------+
| Field                 | Type         | Null | Key | Default | Extra |
+-----------------------+--------------+------+-----+---------+-------+
| auto_id               | bigint(19)   | NO   | PRI | 0       |       |
| user_id               | varchar(100) | YES  | MUL | NULL    |       |
| service               | varchar(100) | YES  |     | NULL    |       |
| name                  | varchar(100) | YES  |     | NULL    |       |
| operation             | varchar(15)  | YES  |     | NULL    |       |
| ipaddress             | varchar(50)  | YES  |     | NULL    |       |
| referrer              | varchar(250) | YES  |     | NULL    |       |
| user_agent            | varchar(250) | YES  |     | NULL    |       |
| created_time          | bigint(19)   | YES  | MUL | NULL    |       |
+-----------------------+--------------+------+-----+---------+-------+

由于第二个SQL查询具有IN子句,因此需要计算其他“行”。这些额外的“行”表示IN子句的临时结果。

只是澄清一下,键IAMCountAudit\u CTndx是已创建时间字段上的索引,对吗?另外,您说您正在查找当前登录的用户数,但您的查询似乎在计算一天中与“operation in('s'、'g'、'y'、'fb')”匹配的行总数。发布create table和insert语句以生成一些示例数据以尝试查询可能会有所帮助。(显然不是整张表,而是几行,这样我们可以看到结构并尝试查询实际数据。)你给出三种不同的陈述,并问为什么检查/返回的行数不同?@Nathan,我添加了我的表详细信息。
+-----------------------+--------------+------+-----+---------+-------+
| Field                 | Type         | Null | Key | Default | Extra |
+-----------------------+--------------+------+-----+---------+-------+
| auto_id               | bigint(19)   | NO   | PRI | 0       |       |
| user_id               | varchar(100) | YES  | MUL | NULL    |       |
| service               | varchar(100) | YES  |     | NULL    |       |
| name                  | varchar(100) | YES  |     | NULL    |       |
| operation             | varchar(15)  | YES  |     | NULL    |       |
| ipaddress             | varchar(50)  | YES  |     | NULL    |       |
| referrer              | varchar(250) | YES  |     | NULL    |       |
| user_agent            | varchar(250) | YES  |     | NULL    |       |
| created_time          | bigint(19)   | YES  | MUL | NULL    |       |
+-----------------------+--------------+------+-----+---------+-------+