MySQL:多类别产品的 SQL 和 DB

2024-01-07

我正在开发一个现在拥有数百万条记录的网站(抱歉,无法透露哪个网站)最初它只有几百条记录,因此下面的查询是可以接受的

查询: SELECT * FROM….WHERE 类别 LIKE ‘%,3,%’;

但现在它只是杀死数据库,因为对于每个查询,它都必须使用上述查询遍历整个 200 万条记录

类别表
身份证件名称
1 女
2 时尚
3 服装
4 配件
5 Top
6 连衣裙
7 耳环
8 短裙
9 长裙
10 男

产品表
ID…..类别….其他位
1 ,1,2,3,6,9,……
2 ,1,2,4,7,
3 ,1,2,3,5,
4 ,10,2,3,4,

你有上面发生的事情的图片。现在,如果我对产品表中的类别行进行全文索引,它只会给出 1 个基数:(

我怎样才能克服这个问题? 我考虑过为每个类别复制行,但数据库目前很大,有 2 GIG,如果有重复,它将变成大约 10 GIG……更像是一个问题,而不是一个解决方案


请记住,将数字存储为字符串每个数字所需的字节数大约是将数字存储为整数所需的字节数的两倍。再加上所有这些逗号。

因此,如果您担心空间,那么它不会像您担心的那样以标准化方式存储数据。

它将允许您编写利用索引的正确查询。因此,如果有一些扩展,您将用一点点存储空间来换取速度的大幅提高。

提示:如果您使用 InnoDB,主键不会消耗任何存储空间,因为表本身存储为主键索引。如果您需要优化按类别搜索,则应首先使用类别 ID 定义规范化表,然后使用产品 ID 定义规范化表。

CREATE TABLE CategoryProduct (
  categoryid INT,
  productid INT,
  PRIMARY KEY (categoryid, productid)
);

另请参阅我的回答在数据库列中存储分隔列表真的那么糟糕吗? https://stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in-a-database-column-really-that-bad了解使用逗号分隔列表的更多缺点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL:多类别产品的 SQL 和 DB 的相关文章

  • Symfony/Doctrine 重新排列数据库列

    当我使用doctrine schema update命令行生成表时 Doctrine 或Symfony 似乎想要添加一个命令来重新排列我的列 将键放在它出现的前面 我想知道是否 更希望在哪里 我可以禁用环境的这个 功能 所以当我去生成我的表
  • 根据product_id获取magento产品的浏览次数

    我想在 Magento 的类别列表页面上显示查看计数 这些数据看起来过去可以通过 reports product collection 访问 但我找不到正确访问它的方法 我基本上想提供一个产品 ID 并获取返回给我的所述产品的观看次数 您可
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • 计算帖子中使用 WordPress 短代码的次数

    我有以下 WordPress 短代码功能 function wp shortcode static i 1 return i i return return add shortcode shortcode wp shortcode 这很好用
  • 在运行之前可以检查 imagecreatefromjpeg 是否会导致内存耗尽致命错误吗?

    我已经对此进行了一些搜索 并且我知道不可能从内存耗尽的致命错误中恢复 我有一个运行 imagecreatefromjpeg 的脚本 我尝试捕获异常 我尝试使用 运行该函数 然后检查返回值是否为 null 或 false 我尝试使用 die
  • Mysql关于重复键更新+子查询

    使用这个问题的答案 需要 MySQL INSERT SELECT 查询具有数百万条记录的表 https stackoverflow com questions 662877 need mysql insert select query fo
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • 软删除最佳实践(PHP/MySQL)

    Problem 在处理产品和订单的 Web 应用程序中 我想维护前员工 用户 与他们处理的订单之间的信息和关系 我想维护过时产品和包含这些产品的订单之间的信息和关系 然而 我希望员工能够整理管理界面 例如删除前员工 过时的产品 过时的产品组
  • 如何将变量设置为触发器 MYSQL 内存储过程的结果?

    我这里有一个小问题 我正在为我的数据库工作创建一个触发器 但我不知道如何在触发器内使用存储过程 我想将过程的结果保存在变量中 然后使用稍后在 IF 比较器上变量 这是我的代码 DELIMITER CREATE TRIGGER insert
  • Symfony 4 生产模式错误处理页面内存耗尽

    我将我的项目设置为prod模式在 env除了自定义错误页面之外的所有内容似乎都有效 我将此作为我的 404 树枝模板 templates bundles TwigBundle Exception error404 html twig inc
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 即使在双引号内或使用 PHP_EOL,PHP echo 也不打印换行符

    这是一张照片剪辑 我认为它很清楚 这真让我抓狂 我似乎无法让 php 在我的本地主机 使用 xampp 或在线 PHP 解释器上打印换行符 如果你想在 php 中使用 HTML 标签 试试这个 echo dkljaks aalksja kl
  • Laravel 5 命名约定

    我对 Laravel 约定有点困惑 因为我是这个框架的新手 我正在关注 Jeffrey Way 他使用的 Laracasts 视频Plural对于控制器名称 E g 页面控制器 卡片控制器 帖子控制器 但如果我参考官方文档Laravel g
  • WordPress 子主题包括包含文件

    我在一家WordPress使用 AMPPS 作为本地主机在我的本地计算机上进行设置 使用 Delta 主题 我创建了一个子主题 delta2 child 初始设置效果很好 但是 我需要更改包含文件夹中名为 home slider php 的
  • Symfony VS CakePHP:哪一个最接近 PHP [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我主要是一名 Rails 开发人员 但有时 我必须使用 PHP 进行编码 因为 stackoverflow com更喜欢可以回答的问题 我想知道
  • 如何更新 MySQL 数据库中的两列?

    这不起作用 UPDATE customers SET firstname John AND lastname Smith WHERE id 1 用逗号分隔值 AND是一个逻辑运算符 它的位置是WHERE and ON条款 UPDATE cu
  • mysql_query 保留返回时在表中创建的数据类型?

    我在mysql中有一个表 CREATE TABLE user id INT name VARCHAR 250 我查询表 result mysql query SELECT id name FROM user 我收集结果 while row
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii
  • 通过 Facebook 图 api 点赞帖子

    你好 我对 facebook PHP SDK 没有什么问题 我想通过 facebook PHP SDK 点赞帖子或其他内容 我正在执行此代码 我认为它应该是正确的 但显然它不起作用 给定的错误代码是的 PHP SDK不知道这种POST请求

随机推荐

  • 当选项卡处于非活动状态时,Chrome 扩展程序代码不再运行?

    我创建了一个非常简单的供个人使用的 Chrome 扩展程序 如果打开了特定网站的选项卡中的 DOM 元素发生更改 该扩展程序会向我发送浏览器通知 并将该选项卡切换为活动选项卡 如果选项卡未处于活动状态且未打开 预期 想要的行为 它会起作用
  • Greasemonkey脚本替代jQuery插件功能?

    我正在尝试为 Firefox 编写一个 Greasemonkey 脚本 以更改某些页面在检测到窗口失焦时的行为 我希望页面能够继续运行 就像它仍然处于焦点一样 即使我有另一个选项卡或窗口处于活动状态 我开始看CAPS 安全策略 https
  • 通过本地化对字符串列表进行排序

    我想根据用户区域设置对下面的字符串列表进行排序 List
  • 在 Bigquery 中参数化数据类型的目的是什么?

    在 BigQuery 中 您可以参数化某些数据类型 参考 https cloud google com bigquery docs reference standard sql data types parameterized data t
  • 在 WebKit.NET 上获取 HTTP 标头

    我一直在尝试弄清楚如何处理 401 响应WebKit NET并显示一个身份验证框 以便用户可以输入他的凭据 然后将其发送回服务器 This guy https github com therealmitchconnors webkitdot
  • SVG 中的路径放置在 D3 图表中圆圈的前面,无论附加顺序如何

    我的数据线应该放在behind但顽固地拒绝这样做 首先 我认为这与附加的顺序有关 但显然 事实并非如此 我了解到others https stackoverflow com questions 29282120 how can i get
  • 在 IIS 7 中运行 MVC3 应用程序时出现问题

    我在运行 Windows 7 Home 64 位的计算机上在 IIS7 中运行 MVC 3 项目时遇到问题 这就是我所做的 安装了 IIS 7 访问服务器并得到IIS欢迎页面 创建一个名为 d MySite 的目录并将 MVC 应用程序复制
  • 使用 Rails 4 Activerecord 将多个列计数合并到单个查询中

    Rails 4 1 Postgres 9 3 部署到 Heroku 我正在尝试减少对数据库的调用次数 我有一个大表 调查 有多个布尔列 例如role composer role performer 等等 控制器有多个查询 例如 sample
  • 如何在React JS中保留浏览器后退按钮上应用的过滤器

    在我的应用程序中 所有列表页面上都有过滤器 现在根据要求 我想在浏览器后退按钮上保留应用的过滤器 例如 假设用户已在销售列表页面上应用了过滤器 之后 他点击一条记录进入销售编辑页面 现在 如果用户点击浏览器后退按钮 那么那些应用的过滤器应该
  • 如何使用多字符分隔符分割字符串并维护分隔符

    使用 VB NET 我有一个字符串 RES00012 Some value RES00034 Another value 我想用 RES 作为分隔符 RES00012 Some value and RES00034 Another valu
  • Visual Studio 不要打开新的浏览器实例

    当我尝试在 Windows 10 上的 Visual Studio 2017RC 中运行 Web 应用程序时 它会打开一个新的浏览器实例 在我的例子中是 chrome 我也尝试过使用 Internet Explorer 情况相同 并且浏览器
  • xmpp 中的带内注册是什么?

    很抱歉不得不问 但我不知道这个术语的含义 也找不到简单的定义 我想知道我是否需要启用此功能 以便用户使用我正在编写的 iphone 客户端在我的 openfire 服务器上注册一个全新的帐户 Thanks 带内注册意味着在您的服务器上没有帐
  • DEVELOPER_TOKEN_NOT_APPROVED AdWords

    美好的一天 伙计们 我正在开发一个项目 需要设置 Google Adwords 帐户才能使用 API 我正在使用 Python 客户端库 当我运行测试应用程序时 出现 DEVELOPER TOKEN NOT APPROVED 错误 经过对这
  • 如何在 androidTest 上正确模拟 ViewModel

    我目前正在为片段编写一些 UI 单元测试 其中之一 Test就是看一个对象列表是否正确显示 这是不是整合测试 因此我希望mock the ViewModel 片段的变量 class FavoritesFragment Fragment pr
  • 如何检测假用户(爬虫)和cURL

    其他一些网站使用 cURL 和虚假 http 引用来复制我的网站内容 我们有什么方法可以检测 cURL 或不是真正的网络浏览器吗 没有什么神奇的解决方案可以避免自动抓取 人类能做的一切 机器人也能做 只有一些解决方案会让这项工作变得更加困难
  • JIRA:查找与用户相关的所有问题

    在 JIRA 中 如何查找所有项目中与用户相关的所有问题 简单的查询搜索仅产生全文结果 即 仅涉及名称被提及的问题 而不是名称已被分配 已报告 已抄送等的问题 我在这里的目的是寻找与我相关的股票会计票据 我使用的是 JIRA 3 13 as
  • ExtJS 6 按关联模型进行网格组

    Context 不久前我用过这个answer https stackoverflow com a 19198773 1842261实现远程排序和过滤 使用 关联模型 关联模型字段 格式 我可以轻松解析服务器端代码中的表达式以查询数据库 Pr
  • 如何使用 JavaScript 清除/重置 formData()?

    我正在使用formData进行Ajax图像上传 当我第一次提交时它将成功上传 并再次单击发布按钮该图像也发布到服务器 我认为formData不会清除 My Code postsubmitimage click function var fo
  • jQuery UI 自动完成 DownArrow UpArrow

    我在 jQuery 自动完成和移动向下箭头和向上箭头方面遇到一些问题 问题似乎在于
  • MySQL:多类别产品的 SQL 和 DB

    我正在开发一个现在拥有数百万条记录的网站 抱歉 无法透露哪个网站 最初它只有几百条记录 因此下面的查询是可以接受的 查询 SELECT FROM WHERE 类别 LIKE 3 但现在它只是杀死数据库 因为对于每个查询 它都必须使用上述查询