please help me out,
i have a database with a table.
id, foreignid, varchar, varchar
it contains contact info
so first varchar is "firstname" or "lastname" the sedcond one is the value, so like "Johnny" or "Depp" or other info such as birthdate.
The table contains 100.000 entries.
My client prefers fuzzy search, but the speed is not fast enough.
I have 2 queries, 1 with fuzzy search (soundex and levenshtien) and one with fulltext and like. See queries below.
Query 1 (advanced one) takes 0.2964 avg with result and 0.2422 without result.
Query 2 takes around 0.108 avg with or without result.
My question is, is this fast already or could this be much faster.
The client wants to check in batches of 10.000 names, so you understand my problem, if I dont want to timeout the script. (ps it's result is webbased)
oh, and an index has been made to that column.
either way, both will take too long if it was 10.000 times.
Query 1:
(SELECT * FROM ci_properties WHERE prop_type='WHOLENAME' AND prop_value!='' AND soundex(prop_value)=soundex('Depp'))
UNION
(SELECT * FROM ci_properties WHERE prop_type='WHOLENAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('Depp'))
UNION
(SELECT s.* FROM (SELECT levenshtein(prop_value, 'Depp') AS dist, sanction_id, prop_type, prop_value FROM ci_properties WHERE prop_type='WHOLENAME' AND prop_value!='') s WHERE dist < 2)
UNION
(SELECT * FROM ci_properties WHERE prop_type='WHOLENAME' AND prop_value!='' AND soundex(prop_value)=soundex('Johnny Depp'))
UNION
(SELECT * FROM ci_properties WHERE prop_type='WHOLENAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('Johnny Depp'))
UNION
(SELECT s.* FROM (SELECT levenshtein(prop_value, 'Johnny Depp') AS dist, sanction_id, prop_type, prop_value FROM ci_properties WHERE prop_type='WHOLENAME' AND prop_value!='') s WHERE dist < 6)
UNION
(SELECT * FROM ci_properties WHERE prop_type='WHOLENAME' AND prop_value!='' AND soundex(prop_value)=soundex('Depp Johnny'))
UNION
(SELECT * FROM ci_properties WHERE prop_type='WHOLENAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('Depp Johnny'))
UNION
(SELECT s.* FROM (SELECT levenshtein(prop_value, 'Depp Johnny') AS dist, sanction_id, prop_type, prop_value FROM ci_properties WHERE prop_type='WHOLENAME' AND prop_value!='') s WHERE dist < 6)
ORDER BY s_id
Query 2:
(SELECT * FROM ci_sanctions_properties WHERE prop_type='WHOLENAME' AND prop_value LIKE '%johnny%%depp%' OR prop_type='WHOLENAME' AND MATCH(prop_value) AGAINST ('+johnny +depp' IN BOOLEAN MODE))
UNION
(SELECT * FROM ci_sanctions_properties WHERE prop_type='WHOLENAME' AND prop_value LIKE '%depp%%johnny%' OR prop_type='WHOLENAME' AND MATCH(prop_value) AGAINST ('+depp +johnny' IN BOOLEAN MODE))
ORDER BY sanction_id