Heim  >  Artikel  >  Backend-Entwicklung  >  mysql随机查询的时候,为什么>=的速度要比=快得多?

mysql随机查询的时候,为什么>=的速度要比=快得多?

WBOY
WBOYOriginal
2016-06-06 20:28:061339Durchsuche

<code>SELECT * FROM `table` 
  WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`)))  
  ORDER BY id LIMIT 1;</code>

以上例子来自:http://www.2cto.com/database/201310/249698.html

这里的 WHERE id >= 如果换成 WHERE id = 的速度要慢得多。
为什么呢?
测试后发现只有=的时候速度会很慢,,=的速度都挺快的。

不知为什么?

回复内容:

<code>SELECT * FROM `table` 
  WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`)))  
  ORDER BY id LIMIT 1;</code>

以上例子来自:http://www.2cto.com/database/201310/249698.html

这里的 WHERE id >= 如果换成 WHERE id = 的速度要慢得多。
为什么呢?
测试后发现只有=的时候速度会很慢,,=的速度都挺快的。

不知为什么?

原理或许与匹配机制有关,=类似字符串的搜索,

=类似模糊搜索,范围比较大导致查询速度问题。或者你试验下

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn