jquery - 按一列无索引或两列其中一列有索引进行搜索

标签 jquery mysql sql database search

根据您的经验,我想知道哪种情况更快

查询超过1000万条记录的表,分两种情况:

  • search1 在单个 product_id
  • search2 由两列 shop_name(已编入索引)和 product_id

所以就会像这样

search1 =    select * from table where product_id = 123456

search 2 = select * from table where shopname ='abz' and product_id = 123456 

第二次搜索有商店名称索引

哪一个会更快?

如果我了解索引如何工作,第二个更快

因为它只会搜索具有shopname ='abz'的ID并忽略其他记录

这是正确的还是我遗漏了一些东西

最佳答案

对于您的两个查询,最佳索引是table(product_id, shopname)。该索引可以被两个 where 子句完全使用。

如果您拥有的唯一索引位于 shopname 上,那么在大多数情况下第二个查询应该会更快。也就是说,product_id 不在索引中,也不是主键的一部分。

如果您的商店名称很少,并且该表无法装入内存,那么您最终可能会遇到称为抖动的情况。但是,除此之外,仅 shopname 上的索引应该更快,但上述索引似乎是您真正想要的索引。

关于jquery - 按一列无索引或两列其中一列有索引进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48240923/

相关文章:

javascript - ajax警报数据不返回php echo的值

使用临时表的 SQL Server 连接上下文不能在使用 SqlDataAdapter.Fill 调用的存储过程中使用

SQLITE Vlookup在2个不同的表中

javascript - 结合 jQuery UI 和 HotTowel

jquery - 将元素拉伸(stretch)到填充的流体父级的全宽

mysql - 无法通过 SSL 将 Laravel 连接到 MySQL。 'PDO::__construct(): this stream does not support SSL/crypto'

sql - DB2 SQL 将十进制转换为带填充零的字符

JavaScript split() 方法导致未定义

Jquery 数据表在指定索引处添加新行

mysql - 获取具有相似声音的记录