草庐IT

OPTIMIZATION

全部标签

sql - 为非关键 webapp 数据选择 MySQL 表类型(MyISAM 与 InnoDB)

使用以下假设考虑此场景:数据库用于非关键网络应用。查询速度至关重要。读/写模式大致为>95%的读取和每天使用mysqldump备份数据库。不需要交易或高级崩溃恢复。如果数据库崩溃,我将简单地导入昨晚的mysqldump。这在这种情况下已经足够好了。无需全文搜索。在上述假设下MyISAM的优点:速度非常快(有一个异常(exception)-见下文)。它是轻量级的,并且在数据库/表到文件系统中的物理文件(.MYD/.MYI/.frm)之间具有易于理解的映射。轻松备份(mysqldump)。总而言之,除了一个主要异常(exception),我对MyISAM非常满意。MyISAM在上述假设下有

mysql - 使用这些 MySQL 表优化查询

我需要一些帮助来优化对2个表的查询。一个将包含大约一百万行,另一个将包含大约一千万行。这是表结构——TableStructureSampleBrowseandSearchQueries这些查询需要很长时间,大约15-20秒,在某些情况下超过一分钟所以,请看看并建议我如何才能使它们在实际使用中更快。附言这是这2个示例搜索和浏览查询的查询计划...Explain:searchqueryExplain:Browsequery 最佳答案 您可能希望在要过滤的字段上放置索引,例如category_id、site_enabled和video_c

MySQL 文本字段和内存使用

我正在开发一个应用程序,该应用程序允许用户向Web表单动态添加问题。我们使用MySQL作为后端,我正在努力寻找最快、最有效的存储表单数据的方式。以前,我们将数据存储在每个表单部分的单独表中。这些列是根据允许我们将动态问题映射到其存储位置的系统命名的。缺点是存储映射系统设计糟糕,这使得使用现有数据修改表单成为一场噩梦。此外,MySQL对每行内存的限制限制了我们每节的问题数量。因此,我正在考虑使用一个表来包含所有表单数据。因为允许问答题,所以我正在考虑使用Text或MediumText作为实际数据的字段类型。但是,我担心运行查询时RAM使用情况。当我运行数据查询时,MySQL是否足够智能以

php - MySQL 包含/排除帖子

这篇文章需要花费大量时间来打字,因为我试图尽可能清楚,所以如果仍然不清楚,请多多包涵。基本上,我有一个数据库中的帖子表,用户可以向其中添加隐私设置。ID|owner_id|post|other_info|privacy_level(intvalue)从那里,用户可以添加他们的隐私详细信息,允许所有[privacy_level=0]、friend(privacy_level=1)、任何人(privacy_level=3)或特定的人或过滤器(privacy_level=4)查看).对于指定特定人员的隐私级别(4),查询将在子查询中引用表“post_privacy_includes_for”

php - 我应该如何重构我的代码(PHP 和 MySQL)以更有效地使用主/从数据库配置?

我使用PHP和MySQL开发了一个Web应用程序,该应用程序全部在单个服务器上运行。当我开始扩展并需要一个单独的数据库服务器,然后最终需要数据库服务器的主/从配置时,我应该如何更新我的代码以连接到正确的服务器?我将数据库连接详细信息存储在一个单独的文件中,因此可以很容易地更新它。但是当我有一个主人(所有写入都将去的地方)和奴隶(所有读取)时会发生什么。优化我的PHP代码的最佳方法是什么?是否有关于如何为主/从服务器构建MySQL的良好资源/示例?干杯 最佳答案 我个人会重构代码以禁止直接从核心程序访问数据库,而是创建一个“数据访问”

php mysql优化

我的任务是根据一些已保存的数据为网站创建一些图形统计数据。事实:-有3个数据库在使用中。dbCurrent、dbStats、dbBackup。dbCurrent是网站的主数据库dbStats保存各种统计表和跟踪数据dbBackup拥有过去五年的统计数据/跟踪表。我将使用的数据来自两个数据库(dbStats、dbBackup)表名是:stats2006、stats2007、stats2008等,除了当前的统计数据只是“stats”。每个表都有其年份的数据。每一年数据的表结构都是一样的:primaryID字段是整数productID字段为整数dateMonitor字段是整数(unixtim

mySQL - 如何解释我的 EXPLAIN 结果并优化此查询?

希望了解我的EXPLAIN结果在这里的含义,并尽可能优化此查询和我的表。查询:SELECTi.pending,i.itemid,i.message,i.cid,i.dateadded,i.entrypoint,SUM(CASEWHENv.direction=1THEN1WHENv.direction=2THEN-1ELSE0END)ASvotes,c.nameAScname,c.tagASctag,i.userid,(SELECTCOUNT(commentid)FROM`comments`WHEREcomments.itemid=i.itemid)AScommentcount,CASE

mysql - 左连接优化

我有一个类似于下面简化的数据库。我需要检索列:col8、col9、col10、col11、col12(我圈出的列目前,我正在使用左连接来连接每个表,但这会导致查询花费很长时间(有很多记录)。分析后,最大的影响是写入tmp表。我将结果限制为24,但由于左连接,它仍在将数千条记录复制到tmp表。http://oberto.co.nz/demo/assets/db2.jpeg这是否可以优化为仍然使用pk连接从每个表中检索带圆圈的列?谢谢。 最佳答案 SELECTa.col12,b1.col8,c1.col9,d1.col10,e1.col

mysql - 显示表状态的疯狂基数计数

迭代1:mysql>showtablestatusLIKE"mybigusertable";+-----------------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+-

MySQL分组查询优化

我有三个表:categories、articles和article_events,结构如下categories:id,name(100,000rows)articles:id,category_id(6000rows)article_events:id,article_id,status_id(20,000rows)每个文章行的最高article_events.id描述了每篇文章的当前状态。我正在返回一个类别表以及其中有多少篇最近事件status_id为“1”的文章。我目前所做的工作有效,但对于我的表的大小来说相当慢(10秒)。想知道是否有办法让它更快。据我所知,所有的表都有适当的索引