我目前在我的服务器上的一个目录中存储了大约300万个图像文件,这导致了严重的性能问题.我想将它们移动到Amazon S3,我想知道是否需要使用分层文件夹结构,或者我是否可以将它们存储在S3上的单个文件夹中.
我从谷歌图片搜索获得了大部分流量,我不想通过更改图像路径来损害我的搜索引擎优化,因此如果没有任何性能问题,S3上的单个文件夹将是理想的.我想LIST操作会很慢,但我没关系.
我以前的印象是删除自动增量表中的行会损害 SELECT 性能,因此我一直使用名为“removed”的 tinyint 列来标记是否删除了某个项目。
我的 SELECT 查询是这样的:
SELECT * FROM items WHERE removed = 0 ORDER BY id DESC LIMIT 25
Run Code Online (Sandbox Code Playgroud)
但我想知道实际上是否只删除这些行有意义。少于 1% 的行被标记为“已删除”,因此 mysql 必须检查每行是否删除 = 0 似乎很愚蠢。
那么删除行会以任何方式损害性能吗?
我正在使用通常在一秒钟内执行的查询,但有时需要10到40秒才能完成.我实际上并不完全清楚子查询是如何工作的,我只知道它有效,因为它为每个faverprofileid提供了15行.
我正在记录慢查询,它告诉我检查了5823244行,这很奇怪,因为在所涉及的任何表中都没有接近那么多行的任何行(收藏夹表最多有50,000行).
任何人都可以给我一些指示吗?这是子查询的问题,需要使用filesort吗?
编辑:运行说明显示users表没有使用索引(即使id是主键).额外的说它:使用临时; 使用filesort.
SELECT F.id,F.created,U.username,U.fullname,U.id,I.*
FROM favorites AS F
INNER JOIN users AS U ON F.faver_profile_id = U.id
INNER JOIN items AS I ON F.notice_id = I.id
WHERE faver_profile_id IN (360,379,95,315,278,1)
AND F.removed = 0
AND I.removed = 0
AND F.collection_id is null
AND I.nudity = 0
AND (SELECT COUNT(*) FROM favorites WHERE faver_profile_id = F.faver_profile_id
AND created > F.created AND removed = 0 AND collection_id is null) < 15
ORDER BY F.faver_profile_id, F.created DESC;
Run Code Online (Sandbox Code Playgroud) 我有一个表,里面有 ~1.2m 行。它有 6 列索引,包括一个包含 url 的 varchar(255) 字段。
我需要能够扫描表以查看表中是否存在 url,因此是索引,但我想知道通过将索引大小减少到 50 左右是否会看到性能提升?
当然,这意味着它可能需要在数据库中搜索 url 时扫描更多行..但我只需要每 30 秒执行一次此查询,所以我想知道较小的索引大小是否值得它。想法?
我需要创建一个简单的散列方法来传递URL中的一些数据.它不需要非常安全,对大多数人来说这不应该是显而易见的.
散列需要包含发送方的数字ID和接收方的ID,我应该能够在读取附加的散列后解码数据.
有任何想法吗?我希望哈希尽可能简短,因为这个网址是通过IM,电子邮件等共享的.
我正在构建的网址缩短服务需要向用户显示一些基本点击统计信息:点击次数,转化次数,引荐域名和国家/地区(可按日期范围过滤).我将来可能想要更高级的统计数据.
是否存在允许我将事件传递给它的开源软件,然后轻松显示该事件的条形图或折线图(例如,两个指定日期之间的"转换"线图).似乎这样的东西应该存在,然后从头开始构建整个事情会容易得多.
我知道有图形脚本,但仍然需要我格式化数据(通常作为xml文件),然后将其传递给图形.我正在寻找一些更完整的东西,我可以只提供事件,然后它会做其他所有事情.
我正在开发一个媒体书签网站,我正在寻找一种方法来记住用户是否已经为一个项目添加了书签(无需每次加载页面都要检查数据库).
我以前没有使用PHP会话,但我认为他们会做的伎俩.
在用户登录时进行初始数据库调用是否有意义,获取用户已添加书签的所有项目并将所有项目ID的数组保存到用户会话中?
然后,当页面被加载时,对于页面上的100个项目中的每一个,它将检查该项目的ID是否在会话数组中(因此我们知道是否显示"书签"按钮或指示他们已经为其添加了书签).
只是想确保这是一个正确的策略,或者是否有更好的方法.即使阵列中有10,000个ID,这也能正常工作吗?
mysql ×3
php ×3
amazon-s3 ×1
analytics ×1
cbo ×1
encryption ×1
indexing ×1
open-source ×1
performance ×1
session ×1
statistics ×1
subquery ×1