Mysql结果按列表排序,每个用户都是唯一的
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql结果按列表排序,每个用户都是唯一的,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1536字,纯文字阅读大概需要3分钟。
内容图文
![Mysql结果按列表排序,每个用户都是唯一的](/upload/InfoBanner/zyjiaocheng/902/535f291975094ca8af130272e3ca5316.jpg)
我有一个包含数千种产品和50个左右经过身份验证的用户的表.
这些用户都在自己的网站上展示产品,他们都需要能够以不同的方式订购产品.
我猜我需要一些包含product_id,user_id和order列的订单的单独表格?
我如何在mysql中最有效地执行此操作以便非常快速,并且如果我在数据库中获得数百万个产品,则不会减慢速度.
在mysql中执行它是否明智,或者我应该使用某种其他索引,如solr / lucene?
我的产品表称为“产品”
我的用户表称为“用户”
我需要的功能的一个很好的例子是谷歌搜索,如果您已登录,您可以在其中订购/抑制结果.
编辑:产品结果将被分页并且用户有权编辑产品,因此它不仅仅是准备好的
解决方法:
嗯,首先,如果你在一个页面上显示数千个产品并最终产生数百万个产品,那将会很慢.我假设你以某种方式将它们过滤到每页一个合理的数字.
无论如何,你对product_order表的连接速度相当快:它在主键和常量(用户id)上,都是整数,它将是一个快速的索引查找.我可以看到一些问题.首先,每个用户是否真的要定义一百万种产品的订购?假设没有订单=最后显示,还有另一个问题:
SELECT whatever
FROM
products p
LEFT JOIN products_order o ON (
p.product_id = o.product_id
AND 1234 = o.user_id
)
WHERE p.stock > 0 -- some search criteria
ORDER BY COALESCE(o.order, 999999999) --- arbitrarily large number
LIMIT 10
ORDER BY发生在LIMIT之前. MySQL必须连接每一行,然后对那个巨大的连接进行排序(hello filesort).然后它从1,000,000行中抛出999,990.
如果事实证明每个人只销售一些产品,那么这个问题就不会发生:where子句将只有MySQL加入并排序几行.如果每个人卖出数百万,你可能不得不做一些非规范化,这样你就可以在products_order中执行所有过滤,这也可以避免大量的行.你会在products_order中需要很多行,每个(产品,用户)组合一个……不幸的是,无论哪种方式,你都会看到痛苦.
内容总结
以上是互联网集市为您收集整理的Mysql结果按列表排序,每个用户都是唯一的全部内容,希望文章能够帮你解决Mysql结果按列表排序,每个用户都是唯一的所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。