Mysql 如何检测像“;帮帮我;?
我有一个字典表(单词)和另一个表,其中包含两个单词,如“helpme”、“helloword”、“loveme” 我想把这张桌子改成“救命”、“你好”、“爱我” 我运行以下序列:Mysql 如何检测像“;帮帮我;?,mysql,sql,sql-server,postgresql,Mysql,Sql,Sql Server,Postgresql,我有一个字典表(单词)和另一个表,其中包含两个单词,如“helpme”、“helloword”、“loveme” 我想把这张桌子改成“救命”、“你好”、“爱我” 我运行以下序列: SELECT table_concatened.twowords, t1.word as 'word1', t2.word as 'word2' FROM table_concatened JOIN dictionary_table AS t1 ON SUBSTRING(table_concaten
SELECT
table_concatened.twowords,
t1.word as 'word1',
t2.word as 'word2'
FROM
table_concatened
JOIN dictionary_table AS t1 ON SUBSTRING(table_concatened.twowords,1,len(t1.word)) = t1.word
JOIN dictionary_table AS t2 ON SUBSTRING(table_concatened.twowords,len(t1.word)+1,len(table_concatened.twowords)) = t2.word;
它正在工作,但我的桌子用了很长时间
如何优化我的sql序列
----表格示例---
字典表
|hello|
|word |
|love |
|me |
具体表格的示例:
|helloword|
|loveyou |
编辑:
1) 该用例用于自动更正。例如,在skype、iPhone、chrome上,当我键入“helloword”时,我会自动更正为“helloword”。
2) 这里的数据库不是很重要。我们的问题是关于算法逻辑和性能优化。如果您不介意使用动态(如果是SQL Server) 返回
ID Value
1 hello word
2 love you
如果您不介意使用动态(如果是SQL Server) 返回
ID Value
1 hello word
2 love you
当您知道以后需要再次分离它们时,为什么要愚蠢地将它们合并为一个字符串?这永远让我感到惊讶。我存储数据的方式完全错误,现在我在使用它时遇到了问题。这很复杂/困难/太慢/不正常!有人能帮忙吗?答案是肯定的——首先修复数据,使其正确存储,然后使用它时所有这些问题都会消失。你不必在困难的事情一开始并不困难的时候就对它们进行优化,而且你不可能同时使用SQL Server、PostgreSQL和MySQL。为实际使用的单个DBMS添加标记,而不是随机添加听起来熟悉的内容。这些数据库之间的语法和功能有很大的不同,了解您使用的特定数据库会使您得到的答案有所不同。请发布并删除不适用的标签。我知道您在使用SQL标记时得到一个建议,即您应该添加一个特定的DBMS标记,如MySQL、SQL Server等,但这意味着使用的是特定的DBMS标记。您的查询必然会很慢,因为
SUBSTRING()
测试无法使用索引进行优化。注意:我同意您最好正确设置表的格式,但是正如您当前的查询一样,它可以简化为。。。t2在t1.word+t2.word=table_concated.两个单词
而不是使用子字符串。另外,substring(x,1,…)
在功能上与left(x,…)
相同,但无论如何,您都不能在此处使用索引。@e4c5:一点也不能。谢谢你先问我。:-)当您知道以后需要再次分离它们时,为什么要愚蠢地将它们合并为一个字符串?这永远让我感到惊讶。我存储数据的方式完全错误,现在我在使用它时遇到了问题。这很复杂/困难/太慢/不正常!有人能帮忙吗?答案是肯定的——首先修复数据,使其正确存储,然后使用它时所有这些问题都会消失。你不必在困难的事情一开始并不困难的时候就对它们进行优化,而且你不可能同时使用SQL Server、PostgreSQL和MySQL。为实际使用的单个DBMS添加标记,而不是随机添加听起来熟悉的内容。这些数据库之间的语法和功能有很大的不同,了解您使用的特定数据库会使您得到的答案有所不同。请发布并删除不适用的标签。我知道您在使用SQL标记时得到一个建议,即您应该添加一个特定的DBMS标记,如MySQL、SQL Server等,但这意味着使用的是特定的DBMS标记。您的查询必然会很慢,因为SUBSTRING()
测试无法使用索引进行优化。注意:我同意您最好正确设置表的格式,但是正如您当前的查询一样,它可以简化为。。。t2在t1.word+t2.word=table_concated.两个单词
而不是使用子字符串。另外,substring(x,1,…)
在功能上与left(x,…)
相同,但无论如何,您都不能在此处使用索引。@e4c5:一点也不能。谢谢你先问我。:-)@nicolasbahout很乐意帮忙。@nicolasbahout很乐意帮忙。