Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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
Sql 使用您提到的JOIN创建一个EXECUTE语句,非常感谢,但是您的解决方案在我的环境中性能很差,在1700万个关键字的表中,处理需要2-3分钟。。 SELECT * FROM FTS_KEYWORDS ID | KEYWORD ----+-------_Sql_Firebird_Firebird 3.0 - Fatal编程技术网

Sql 使用您提到的JOIN创建一个EXECUTE语句,非常感谢,但是您的解决方案在我的环境中性能很差,在1700万个关键字的表中,处理需要2-3分钟。。 SELECT * FROM FTS_KEYWORDS ID | KEYWORD ----+-------

Sql 使用您提到的JOIN创建一个EXECUTE语句,非常感谢,但是您的解决方案在我的环境中性能很差,在1700万个关键字的表中,处理需要2-3分钟。。 SELECT * FROM FTS_KEYWORDS ID | KEYWORD ----+-------,sql,firebird,firebird-3.0,Sql,Firebird,Firebird 3.0,使用您提到的JOIN创建一个EXECUTE语句,非常感谢,但是您的解决方案在我的环境中性能很差,在1700万个关键字的表中,处理需要2-3分钟。。 SELECT * FROM FTS_KEYWORDS ID | KEYWORD ----+----------- 1 | 'FORD' 1 | 'MUSTANG' 1 | '2010' 2 | 'FORD' 2 | 'FUSION' 2 | 'TURBO' 2 | '2010' 3 | 'FORD' 3 | '


使用您提到的
JOIN
创建一个
EXECUTE语句
,非常感谢,但是您的解决方案在我的环境中性能很差,在1700万个关键字的表中,处理需要2-3分钟。。
SELECT * FROM FTS_KEYWORDS

 ID | KEYWORD
----+-----------
  1 | 'FORD'
  1 | 'MUSTANG'
  1 | '2010'
  2 | 'FORD'
  2 | 'FUSION'
  2 | 'TURBO'
  2 | '2010'
  3 | 'FORD'
  3 | 'RANGER'
  3 | 'TURBO'
  3 | '2010'
  3 | 'BLACK'
SELECT TOKENS FROM FTS_TOKENIZE('FORD')

 TOKENS
-------------
  'FORD'
:TOKEN_1 = 'FORD'

SELECT DISTINCT ID
FROM FTS_KEYWORDS
WHERE (KEYWORD STARTING :TOKEN_1)

 ID 
-----
  1
  2 
  3 
SELECT TOKENS FROM FTS_TOKENIZE('FORD 2010 BLACK')

 TOKENS
-------------
 'FORD'
 '2010'
 'BLACK'
:TOKEN_1 = 'FORD'
:TOKEN_2 = '2010'
:TOKEN_3 = 'BLACK'

SELECT DISTINCT K1.ID
FROM FTS_KEYWORDS K1
WHERE (K1.KEYWORD STARTING :TOKEN_1)
  AND (K1.ID IN (SELECT DISTINCT K2.ID
                 FROM FTS_KEYWORDS K2
                 WHERE (K2.KEYWORD STARTING :TOKEN_2)))
                   AND (K2.ID IN (SELECT DISTINCT K3.ID
                                  FROM FTS_KEYWORDS K3
                                  WHERE (K3.KEYWORD STARTING :TOKEN_3)))

 ID 
-----
  3 
SELECT 
  K.ID, COUNT(*) 
FROM FTS_KEYWORDS K
WHERE
  (SELECT ASCII_CHAR(5) || LIST(T.TOKEN, ASCII_CHAR(5)) || ASCII_CHAR(5) FROM FTS_TOKENIZE('FORD 2010 BLACK') T)
  LIKE '%' || ASCII_CHAR(5) || K.KEYWORD || ASCII_CHAR(5) || '%'
GROUP BY K.ID
HAVING COUNT(*)=(SELECT COUNT(*) FROM FTS_TOKENIZE('FORD 2010 BLACK') TX)
SELECT 
  K.ID, COUNT(*) 
FROM FTS_KEYWORDS K
WHERE
  ASCII_CHAR(5) || 'FORD' || ASCII_CHAR(5) || '2010' || ASCII_CHAR(5) || 'BLACK' || ASCII_CHAR(5) 
  LIKE '%' || ASCII_CHAR(5) || K.KEYWORD || ASCII_CHAR(5) || '%'
GROUP BY K.ID
HAVING COUNT(*)=3
SELECT
    DISTINCT K1.ID
FROM
    FTS_KEYWORDS K1
    INNER JOIN FTS_KEYWORDS K2 ON K2.ID = K1.ID AND K2.KEYWORD STARTING 'FORD'
    INNER JOIN FTS_KEYWORDS K3 ON K3.ID = K2.ID AND K3.KEYWORD STARTING '2010'
WHERE
    K1.KEYWORD STARTING 'BLACK' 
SELECT DISTINCT K.ID FROM FTS_TOKENIZE ('FORD 2010 BLACK') FT JOIN FTS_KEYWORDS K ON K.KEYWORD STARTING FT.TOKENS WHERE NOT EXISTS(SELECT * FROM FTS_TOKENIZE('FORD 2010 BLACK') FT2 WHERE NOT EXISTS(SELECT * FROM FTS_KEYWORDS K2 WHERE K2.KEYWORD STARTING FT2.TOKENS AND K.ID = K2.ID))