2016-10-19 76 views
0
  • MySQL的引擎:InnoDB的
  • MySQL版本:31年6月5日

1.Run第一簡單的查詢全文搜索後,MySQL查詢鎖

SELECT o.id 
FROM tbl_oper o 
WHERE o.id_oper_tip = 8 AND o.id_oper_naim = 6; 

結果:7行

2.R在同一個表未進行全文搜索

SELECT 
    o.id, 
    MATCH(o.full_text_search) AGAINST('7930' IN BOOLEAN MODE) 'match' 
FROM tbl_oper o 
WHERE 0 < MATCH(o.full_text_search) AGAINST('7930' IN BOOLEAN MODE) 

結果:6行(不管)

3.重複第一個查詢,結果:0行,但全文搜索還是回到6行

4.Queries沒有 「AND」 關鍵字正常工作:

SELECT o.id 
FROM tbl_oper o 
WHERE o.id_oper_tip = 8 

7行

SELECT o.id 
FROM tbl_oper o 
WHERE o.id_oper_naim = 6 

500+行

5,第一次查詢只能重啓後正常工作。爲什麼?

相同的結果查詢是從IDE,貝殼,PHP應用程序內

爲tbl_oper創建語句運行:

CREATE TABLE 'tbl_oper' (
    'id'    INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 
    'id_oper_naim'  INT(10) UNSIGNED   DEFAULT NULL, 
    'id_oper_tip'  INT(10) UNSIGNED   DEFAULT NULL, 
    'num'    VARCHAR(20)    DEFAULT NULL, 
    'data_oper'   DATE      DEFAULT NULL, 
    'time_oper'   VARCHAR(20)    DEFAULT NULL, 
    'id_sotrZ'   INT(10) UNSIGNED   DEFAULT NULL, 
    'id_fiz_deb'  INT(10) UNSIGNED   DEFAULT NULL, 
    'id_yur_deb'  INT(10) UNSIGNED   DEFAULT NULL, 
    'id_podrazdel_deb' INT(10) UNSIGNED   DEFAULT NULL, 
    'id_fiz_kred'  INT(10) UNSIGNED   DEFAULT NULL, 
    'id_yur_kred'  INT(10) UNSIGNED   DEFAULT NULL, 
    'id_podrazdel_kred' INT(10) UNSIGNED   DEFAULT NULL, 
    'id_nds_stavka'  INT(10) UNSIGNED   DEFAULT NULL, 
    'summa'    DECIMAL(10, 2)   DEFAULT NULL, 
    'summa_nds'   FLOAT      DEFAULT NULL, 
    'comment'   TEXT, 
    'prov'    INT(10) UNSIGNED   DEFAULT NULL, 
    'num_kred'   VARCHAR(20)    DEFAULT NULL, 
    'prem'    INT(11)     DEFAULT NULL, 
    'id_dealer'   INT(10) UNSIGNED   DEFAULT NULL, 
    'full_text_search' TEXT, 
    PRIMARY KEY ('id'), 
    KEY 'id_podrazdel_kred' ('id_podrazdel_kred'), 
    KEY 'id_oper_naim' ('id_oper_naim'), 
    KEY 'id_oper_tip' ('id_oper_tip'), 
    KEY 'id_yur_deb' ('id_yur_deb'), 
    KEY 'id_podrazdel_deb' ('id_podrazdel_deb'), 
    KEY 'id_yur_kred' ('id_yur_kred'), 
    KEY 'id_fiz_deb' ('id_fiz_deb'), 
    KEY 'id_nds_stavka' ('id_nds_stavka'), 
    KEY 'ct_oper_sotrz_idx' ('id_sotrZ'), 
    KEY 'ct_oper_fiz_kred_idx' ('id_fiz_kred'), 
    FULLTEXT KEY 'full_text_search' ('full_text_search'), 
    CONSTRAINT 'ct_oper_fiz_deb' FOREIGN KEY ('id_fiz_deb') REFERENCES 'tbl_person' ('id') ON UPDATE CASCADE, 
    CONSTRAINT 'ct_oper_fiz_kred' FOREIGN KEY ('id_fiz_kred') REFERENCES 'tbl_person' ('id') ON UPDATE CASCADE, 
    CONSTRAINT 'ct_oper_naim' FOREIGN KEY ('id_oper_naim') REFERENCES 'spr_oper_naim' ('id') ON UPDATE CASCADE, 
    CONSTRAINT 'ct_oper_sotrz' FOREIGN KEY ('id_sotrZ') REFERENCES 'tbl_person' ('id') ON UPDATE CASCADE, 
    CONSTRAINT 'ct_oper_type' FOREIGN KEY ('id_oper_tip') REFERENCES 'spr_oper_tip' ('id') ON UPDATE CASCADE, 
    CONSTRAINT 'ct_podrazdel_deb' FOREIGN KEY ('id_podrazdel_deb') REFERENCES 'tbl_podrazdel' ('id') ON UPDATE CASCADE, 
    CONSTRAINT 'ct_podrazdel_kred' FOREIGN KEY ('id_podrazdel_kred') REFERENCES 'tbl_podrazdel' ('id') ON UPDATE CASCADE, 
    CONSTRAINT 'ct_yur_deb' FOREIGN KEY ('id_yur_deb') REFERENCES 'tbl_yur' ('id') ON UPDATE CASCADE, 
    CONSTRAINT 'ct_yur_kred' FOREIGN KEY ('id_yur_kred') REFERENCES 'tbl_yur' ('id') ON UPDATE CASCADE 
) 
    ENGINE = InnoDB 
    AUTO_INCREMENT = 38357 
    DEFAULT CHARSET = utf8 

回答

0

I還原型數據庫1個表,9行,3個索引。這是最小的設置重複錯誤; 沒有外鍵,只有索引。

CREATE TABLE `operations` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `name_id` int(10) unsigned DEFAULT NULL, 
    `type_id` int(10) unsigned DEFAULT NULL, 
    `description` text, 
    PRIMARY KEY (`id`), 
    KEY `name_id_idx` (`name_id`), 
    KEY `type_id_idx` (`type_id`), 
    FULLTEXT KEY `ft_idx` (`description`) 
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 


id | name_id | type_id | description 
---+---------+---------+------------ 
1 | 2  | 3  | "hello world" 
2 | 3  | 1  | "pascal" 
3 | 3  | 1  | "geeen apple" 
4 | 6  | 8  | "deep hell" 
5 | 5  | 1  | NULL 
6 | 3  | 1  | NULL 
7 | 2  | 3  | NULL 
8 | 3  | 4  | NULL 
9 | 6  | 8  | NULL 

第一次查詢的工作,如果:

  • 服務器重啓
  • 重新編制任何索引
  • 仍然一行name_id = 6type_id = 8

在版本5.6.31上檢查此錯誤5.6.34

升級到5.7.16解決了問題;