在mysql中使用LIKE子句有什么好处

时间:2015-04-18 11:13:22

标签: php mysql

我想创建一个字典网站,我想知道在我的字典中哪一个更适合搜索:

SELECT col FROM table WHERE col='anything'

OR

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

哪一个更具速度和性能? (仅用于完全匹配的单词) TNX

5 个答案:

答案 0 :(得分:0)

如果您的列col是索引,那么使用第一个查询将使用索引

SELECT col FROM table WHERE col='anything'

在第二种情况下,即使列col是索引,优化器也无法使用索引。

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

查看有关查询优化的更多信息

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

答案 1 :(得分:0)

比较字符串时,等于就像一样会执行相同的操作。

如果评估的列已编入索引,

Equals 将表现得更好。

LIKE 将为您提供更多功能:'%','_'等,可让您执行更广泛的查询。有关 LIKE

的更多信息,请参阅http://www.w3schools.com/sql/sql_like.asp

答案 2 :(得分: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'这将返回以字符串开头开始

答案 3 :(得分:0)

要完全匹配单词(因为你正在制作字典),你应该使用两个查询中的第一个:

 SELECT col FROM table WHERE col='anything'

另一个查询将匹配包含字符串'anything'的任何内容。这将包括'fooanything'(不是一个单词)和'foo anything bar'。这可能是你不想要的。

所以回答你的问题:

  

在mysql中使用LIKE子句有什么好处?

它的优点是能够匹配包含字符串的项目,但在您的用例(字典)中它没有任何优势,并且当您需要时将实际返回多个匹配项之一。

例如:想象一下,你正在查找“任何”一词......

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

此查询将返回:'any','many','anyway','nothing'等...

答案 4 :(得分:0)

equals(=)运算符是一个"比较运算符比较两个值是否相等。"换句话说,在SQL语句中,除非两个方程的值相等,否则它不会回复true。 防爆。 SELECT * FROM student WHERE roll = 10;

仅当roll的值等于10时才返回Value。

LIKE运算符"实现模式匹配比较"尝试将字符串值与包含通配符字符的模式字符串进行匹配。" 防爆。 SELECT * FROM student WHERE name LIKE"%vat&#34 ;;

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

SELECT * FROM student WHERE name LIKE" Pra%&#34 ;; 它将返回名称列值以字符串" Pra"。

开头的所有行

SELECT * FROM student WHERE name LIKE"%va%&#34 ;; 它将返回名称列值具有字符串" Pra"。

的所有行

注意:

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).
相关问题