2015-04-18 19 views
-4

使用LIKE子句的优势,我想知道哪一个会是在我的字典里寻找更好:什么是我想创造一个词典网站,在MySQL

SELECT col FROM table WHERE col='anything' 

OR

SELECT col FROM table WHERE col LIKE '%anything%' 

哪一个有更快的速度和性能? (仅适用于正好匹配字) TNX

+0

它放在你希望你的搜索功能需要的工作取决于? –

+0

第一个会更快,但它不会这样做。 '%anything%'会找到任何包含'%anything%'的东西,而'anything'只会找到完全匹配。 – Jite

+0

我有一个英文单词列表,我希望在它们中搜索,你推荐什么? – Shafizadeh

回答

0

如果列col是指数,然后用第一个查询将使用索引

SELECT col FROM table WHERE col='anything' 

而且,即使列col被索引优化将第2个的情况下无法使用索引。

所以第一个查询在性能上会更好。

签出更多的关于查询优化的

https://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html

+0

我问了一个关于[在存在'union all'时排序查询结果]和*(我认为)*的问题,你为我写了一个答案。 (我用另一个帐户问了这个问题,现在这个帐户被删除了)。所以我找不到你的答案,你能找到它吗? (我也记得你在解决方案中使用了@变量)tnx – Shafizadeh

+1

哎哟我真的找不到那个!由于我给出了很多涉及使用mysql变量的答案。 –

+0

好吧,我在[这里]再次问这个问题(http://stackoverflow.com/questions/33166093/how-to-sort-the-result-of-multiple-queries-alternatively),如果你有空闲时间,请看看它,因为我只需要你已经给我的那个答案。 – Shafizadeh

0

当比较,无论是等于将执行大约相同。

等于如果所评估的列是索引的,则性能会更好。

LIKE会给你更多的功能:'%','_'等,这将允许你执行更广泛的查询。更多信息请参见http://www.w3schools.com/sql/sql_like.aspLIKE

+0

ahan,我只想要完全匹配单词!!!你推荐我使用等于? – Shafizadeh

+0

是的。如果这是一个常见的查询,您应该考虑索引该列,就像Abhik Chakraborty所说 – Josi

0

SELECT col FROM table WHERE col='anything'SELECT col FROM table WHERE col LIKE '%anything%'将返回几乎相同的答案,

SELECT col FROM table WHERE col LIKE 'anything%'这将返回末用绳子什么

SELECT col FROM table WHERE col LIKE '%anything'这将返回字符串启动任何东西

0

完全匹配的话(因为你是一个字典),你应该使用第一个两个查询:

SELECT col FROM table WHERE col='anything' 

其他查询将匹配任何包含字符串“什么”。这将包括'fooanything'(不是一个词)和'foo any bar'。这可能是你不想要的。

因此,要回答你的问题:

什么是MySQL中使用LIKE子句的优势在哪里?

它具有能够匹配其包含一个字符串的项目优势,但在您的使用情况(字典)它没有优势任何,当你只想要一个会INFACT返回几场比赛。

例如:假设你正在寻找了术语“任意” ...

SELECT col FROM table WHERE col LIKE '%any%' 

该查询将返回:“任何”,“多”,“反正”,“什么”,等等。 ..

0

等于(=)运算符是“比较运算符比较两个值是否相等”。换句话说,在SQL语句中,除非方程的两个值相等,否则它不回答真。例如, SELECT * FROM student WHERE roll = 10;

它将返回值仅当辊的值等于10。

凡为LIKE运算“实现了模式匹配的比较”试图匹配“对含图案串野生一个字符串值卡字符“。例如, SELECT * FROM student WHERE name LIKE“%vat”;

它将返回名称列值以字符串“vat”结尾的所有行。

SELECT * FROM student WHERE name like“Pra%”; 它将返回名称列值以字符串“Pra”开头的所有行。

SELECT * FROM student WHERE name LIKE“%va%”; 它将返回名称列值为字符串“Pra”的所有行。

NB:

1) When you know the exact value to comapre with the coloumn you may use =(equal) operator for Exact/Accurate Result. 
    When you dont know the Compared value but you are able to remember part of the string or value you may use "LIKE" operator. 

2) Equal(=), Comaprision Operator can be used in Integer/Float (Numeric) along with varchar/varchar2/text (String) but the Like Operatpor can be used only for varchar/varchar2/Text (String). 
相关问题