我想创建一个字典网站,我想知道在我的字典中哪一个更适合搜索:
SELECT col FROM table WHERE col='anything'
OR
SELECT col FROM table WHERE col LIKE '%anything%'
哪一个更具速度和性能? (仅用于完全匹配的单词) TNX
答案 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).