Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
优化MySQL数据库结构_Mysql_Database - Fatal编程技术网

优化MySQL数据库结构

优化MySQL数据库结构,mysql,database,Mysql,Database,我想创建一个数据库结构,将有良好的效率。现在数据库看起来是这样的: data (type:primary; data is unique because miliseconds) | category | price | plenty different columns of data 201201231100121234 | 3 | 0 | 201201231100121249

我想创建一个数据库结构,将有良好的效率。现在数据库看起来是这样的:

data (type:primary; data is unique because miliseconds) | category | price | plenty different columns of data
201201231100121234                                      |   3      |   0   |
201201231100121249                                      |   14     |   5   |
  • 假设我有大约15个主要类别,所以我想保留特定表中的每个记录,这取决于类别。所以,若用户要在特定类别中进行搜索,那个么查询将只针对特定表中的所有记录。所以这是一个很好的解决方案,对吗

  • 但若用户希望查看所有类别中按数据排序的所有记录,该怎么办?也许我需要使用UNION,但是使用临时表进行快速搜索比将所有类别保留在一个表中要糟糕得多,对吗?我可能只允许用户搜索所选类别,而不是所有类别

  • 最后一个问题是关于排序的。当用户使用“数据”列排序时,如:“按数据asc限制0,10排序”或“按数据描述限制0,10排序”,则搜索速度很快,因为数据是唯一的。但当用户希望按价格排序(这不能是唯一的)时,没有解决方案可以提高查询的性能?有什么解决办法吗


  • 我想你应该只留一张桌子

    为什么不使用毫秒而不是毫秒

    所以我想把每一条记录都保存在特定的表中

    否-这是一个坏主意,它使管理数据的代码变得更加复杂,并且与正确索引的表相比,没有提供任何可测量的性能优势。当然,如果不同的类别有不同的字段集与之关联,则可能会有改变结构的情况,但最好通过使用1:1非强制联接在单个表中维护公共字段集,并在其他表中使用特定于类别的字段来表示

    你的第三点似乎有点困惑。没有什么可以阻止您在其他列上添加索引,但是,以您的示例为例,假设您有20条记录,每条记录的最大价格值为-当您
    按price DESC LIMIT 0,10进行排序时,您希望看到哪些记录