为什么我从sql得到一个奇怪的响应?

gudnpqoy  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(213)

我使用sql已经很长时间了,但这是我第一次看到它。
我有一张table:

+------------------+--------------+------+-----+---------+-------+
| Field            | Type         | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| id               | int(11)      | YES  | MUL | NULL    |       |
| client_id        | varchar(191) | YES  | MUL | NULL    |       |
| client_status    | int(11)      | YES  |     | NULL    |       |
| lastname         | varchar(191) | YES  |     | NULL    |       |
| firstname        | varchar(191) | YES  |     | NULL    |       |
| patronymic       | varchar(191) | YES  |     | NULL    |       |
| date_of_birth    | date         | YES  | MUL | NULL    |       |
| sex              | int(11)      | YES  |     | NULL    |       |
| state            | int(11)      | YES  | MUL | NULL    |       |
| phone_mobile     | varchar(191) | YES  | MUL | NULL    |       |
| phone_home       | varchar(191) | YES  |     | NULL    |       |
| adr_city_type    | varchar(191) | YES  |     | NULL    |       |
| adr_city         | varchar(191) | YES  |     | NULL    |       |
| adr_apt          | varchar(191) | YES  |     | NULL    |       |
| adr_street_num   | varchar(191) | YES  |     | NULL    |       |
| adr_street       | varchar(191) | YES  |     | NULL    |       |
| adr_street_type  | varchar(191) | YES  |     | NULL    |       |
| adr_district     | varchar(191) | YES  |     | NULL    |       |
| adr_postcode     | varchar(191) | YES  |     | NULL    |       |
| email            | varchar(191) | YES  | MUL | NULL    |       |
| comment          | text         | YES  |     | NULL    |       |
+------------------+--------------+------+-----+---------+-------+

我有一个简单的问题:

select client_id, lastname, firstname, phone_mobile, email 
  from contacts 
 where `client_id`="8011000000000005263" 
limit 1;

当我执行它时,我得到以下结果:空集(0.00秒)
我知道这个标识符是一个数据库,所以我决定对这个查询进行实验,看看下面的结果。
2

mysql> select client_id, lastname, firstname, phone_mobile, email from contacts where `client_id` like "%8011000000000005263%" limit 1;
Empty set (1.74 sec)

三。mysql>选择client\u id、lastname、firstname、phone\u mobile、email from contacts where client_id =8010000000005263限位1;

+-------------------+----------------------+-----------+---------------+-------+
| client_id         | lastname             | firstname | phone_mobile  | email |
+-------------------+----------------------+-----------+---------------+-------+
| 8011000000000004655| OSTROVKAYA           | YANA      | +111111111111| NULL  |
+-------------------+----------------------+-----------+---------------+-------+
1 row in set (0.68 sec)

4

mysql> select client_id, lastname, firstname, phone_mobile, email from 
contacts where `client_id`= 8011000000000005263;
234 rows in set (0.83 sec) - WTF ???

5

mysql> select client_id, lastname, firstname, phone_mobile, email from 
contacts use index (client_id)  where `client_id`=8011000000000005263;
234 rows in set (0.90 sec) - WTF ???

6

mysql> select client_id, lastname, firstname, phone_mobile, email from contacts use index (client_id)  where client_id in (8011000000000005263) group by id_client;
234 rows in set (1.94 sec) - WTF ???

我想为最后一个请求提供一个解释:

mysql> explain select client_id, lastname, firstname, phone_mobile, email from contacts use index (client_id)  where client_id in (8011000000000005263) group by id_client;
+----+-------------+--------------+------------+-------+---------------+-----------+---------+------+---------+----------+-------------+
| id | select_type | table        | partitions | type  | possible_keys | key       | key_len | ref  | rows    | filtered | Extra       |
+----+-------------+--------------+------------+-------+---------------+-----------+---------+------+---------+----------+-------------+
|  1 | SIMPLE      | contacts     | NULL       | index | client_id     | client_id | 576     | NULL | 1183745 |    10.00 | Using where |
+----+-------------+--------------+------------+-------+---------------+-----------+---------+------+---------+----------+-------------+
1 row in set, 3 warnings (0.00 sec)

我不明白为什么一个简单的查询没有正确执行。我怎样才能得到正确的结果。
此外,这个请求被放在mysql服务器上(((
当我们与辅助表进行通信时,请求将挂起20-30分钟。
为了充分了解正在发生的事情,我将提供表索引:

+--------------+------------+------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
    | Table        | Non_unique | Key_name         | Seq_in_index | Column_name      | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
    +--------------+------------+------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
    | contacts |          1 | id               |            1 | id               | A         |     1177634 |     NULL | NULL   | YES  | BTREE      |         |               |
    | contacts |          1 | client_id        |            1 | client_id        | A         |     1136884 |     NULL | NULL   | YES  | BTREE      |         |               |
    | contacts |          1 | combo            |            1 | email            | A         |      194844 |     NULL | NULL   | YES  | BTREE      |         |               |
    | contacts |          1 | combo            |            2 | phone_mobile     | A         |     1165372 |     NULL | NULL   | YES  | BTREE      |         |               |
    | contacts |          1 | combo            |            3 | date_of_birth    | A         |     1081845 |     NULL | NULL   | YES  | BTREE      |         |               |
    | contacts |          1 | combo            |            4 | state            | A         |     1148369 |     NULL | NULL   | YES  | BTREE      |         |               |
    | contacts |          1 | email            |            1 | email            | A         |      197052 |     NULL | NULL   | YES  | BTREE      |         |               |
    | contacts |          1 | phone_mobile     |            1 | phone_mobile     | A         |     1127414 |     NULL | NULL   | YES  | BTREE      |         |               |
    | contacts |          1 | state            |            1 | state            | A         |           2 |     NULL | NULL   | YES  | BTREE      |         |               |
    +--------------+------------+------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
    9 rows in set (0.02 sec)

请有经验的开发人员向我解释一下这种语言行为的现象。
非常感谢!所有清洁代码:)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题