- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有包含 LONGTEXT
的表格帖子。我的问题是我想检索特定帖子的部分内容(基本上是分页)
我使用以下查询:
SELECT SUBSTRING(post_content,1000,1000) FROM posts WHERE id=x
这在某种程度上是好的,但问题是位置和长度。大多数时候,第一个词和最后一个词并不完整,这是有道理的。
如何从位置 x 检索长度为 y 的完整单词?
最佳答案
您这样做的目的大概是为了节省 MySQL 服务器和运行您的应用程序的机器之间的网络流量开销。碰巧的是,您并没有在 MySQL 服务器上节省任何其他类型的工作负载。它必须从磁盘中获取 LONGTEXT 项目,然后通过 SUBSTRING
运行它。
根据可靠的性能分析,您可能已经决定必须保存此网络流量。既然您知道它不会节省很多 MySQL 服务器工作负载,您可能想重新访问此分析。除非您有无数非常长的 LONGTEXT 项目和大量流量来检索和显示其中的一部分,否则您的节省将是微不足道的。
换句话说,这是一个优化任务。亚格尼? http://en.wikipedia.org/wiki/YAGNI
如果您确实需要它,您将不得不创建软件来逐字处理 LONGTEXT 项目。最好的办法是在您的客户端软件中执行此操作。首先检索第一页加上文章的一两页。然后,解析文本以寻找完整的单词。在第一页中找到最后一个完整的单词及其后面的空格后,该字符位置就是下一页的起始位置。
这种任务是 MySQL 存储过程中的一个巨大难题。此外,当您在存储过程中执行此操作时,您将在共享且难以扩展的资源(MySQL 服务器计算机)而不是可克隆的客户端计算机上使用处理周期。
我知道我没有给您干净的代码来让您按照您的要求去做。但是按照您的建议去做显然不是一个好主意。
编辑:
观察:1 GB 的服务器 RAM 成本大约为 20 美元。像 memcached 这样的缓存系统可以很好地有效利用值(value) 100 美元的内存。这对于您描述的用例来说已经足够了。
另一个观察:许多服务于大型文档的公司使用文件系统而不是 DBMS 来存储它们。文件系统可以在内容服务器之间非常容易地共享或复制,并且可以在没有任何开销的情况下轻松地随机访问文件。
将整本书存储在单个 BLOB 或 CLOB 中有点创新。如果你能按某种片段——页来分解这些书?章节?千字 block ? -- 并为每个段创建单独的数据行,您的 DBMS 将比您描述的更好地扩展。
如果您无论如何都要这样做,请按以下步骤操作:
总是在每个段中检索比您需要的多 100 个字符。比如需要字符30000 - 35000时,检索30000 - 35100。
检索段后,查找数据中的第一个分词(第一个段除外)并从该词开始显示。
同理,在多出的100个字节中找到第一个分词,并显示到该分词为止。
所以你获取的数据可能是 30000 - 35100,你显示的数据可能是 30013 - 35048,但它会是整个单词。
关于MySQL LONGTEXT 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12543247/
我有一个网站。本网站的用户拥有包含 Longtext 字段的配置文件。我进退两难。如果我合并用户和配置文件表,它会减慢我的查询速度吗?我对用户表有大量查询。这些查询针对 integer 数字,与 Lo
我有包含 LONGTEXT 的表格帖子。我的问题是我想检索特定帖子的部分内容(基本上是分页) 我使用以下查询: SELECT SUBSTRING(post_content,1000,1000) FRO
我被这个难住了,第一次需要一些帮助。 我有一个数据库字段,它是 mysql LONGTEXT,带有一个时间戳字符串,例如字符串“1448386279” 我需要将其放入适当的 MySql TIMESTA
我需要知道如何按照写入方式显示放入数据库长文本字段中的信息。 就像用户在下面这样写: My life is full of love I fly like wedding doves I blow p
我正在开发电子邮件支持系统。每个存储的电子邮件包含 from_email、subject、date、一些标志和邮件的内容。显然,邮件数量可能很大,我们的系统主要关注最近的邮件(例如,最近 14 天),
我有一个从 SQL Server 到我的 mySQL 数据库的链接服务器(使用 MySQL ODBC Driver 5.3 的 Windows Server)。我有一个独特的情况,如果我在 OPEN
我需要一些帮助。示例: $table->text('description'); 但是,如果我希望我的数据类型是“LONGTEXT”,该如何编码/编写? 我找不到关于此 @ http://larave
好吧,就这么简短而甜蜜。我的数据库中有一个字段是 LONGTEXT。该字段通常每个字段包含大约 2,000 行文本。 我需要它做的是遍历这个 LONGTEXT 字段并取出包含输入内容的行。(抱歉,我不
我有一条插入语句从数据库链接中提取数据。 insert into table (a,b,c) select a,b,c from table@mysqldb; 这里c列在mysql中是long
我有一个 MySQL 表,其字段类型为 LONGTEXT $sql = "SELECT * FROM openings WHERE shortlisted = 'NO' ORDER BY fullN
如果您知道文本行以什么开头,如何从 LONGTEXT 列返回段落行? SELECT SUBSTRING('\nA line of text starts here', `paragraphs`) FR
我正在为我的大学构建一个带有发布消息选项的门户。因此,我使用 LONGTEXT 将消息存储在 mysql 中。但不知何故 LONGTEXT 不接受撇号标记。每当我发布带有撇号标记的句子时,它都会出现以
好吧,我有一个代码可以更新 MySQL 中的 LongText。这是代码: $id = rand(1, 100); $puffleString = "{$id}|{$name}|{$type}|100
我需要更改迁移列类型 $table->string('text');对于文本类型,我尝试通过几种方式做到这一点,但都没有奏效。是否可以在一次迁移中完成。我可以猜测删除该列,然后使用新类型再次创建它,但
我正在使用嵌入式 Apache Derby 数据库进行 JUnit 测试。我有一些 JPA 实体。有些实体包含这样的列: @Column(nullable = false) private Strin
.我需要在右侧截断带有“...”的 DataGridTextColumn LongText,但我不知道像这样“如何制作”: What i Want .与现在不同: Actual 这是我的 DataGr
我正在尝试更新新数据库中的一些图像。我已阅读如何使用此 SQL 查询: UPDATE blogs SET body = REPLACE(body, 'http://www.OLDSITE.com/wp
我的数据库的一列存储了很长的文本。大多数文本都小于 TEXT 的限制 (64KB)。然而,其中大约 0.1% 是长文本 (> 64KB)。最初我使用 TEXT 作为列数据类型,并且我必须忽略长文本的条
我是新的 wordpress。并在 Wordpress、PHP 和 MYSQL 中工作。我有一个数据库表,其中所有凭证到期日期都以如下的长文本格式保存: meta_id post_id
我的数据库中有一个长文本的集合字段。我在该字段中使用了价格,无法将字段类型更改为整数。然而,在我的查询中,我需要按这些字段进行排序,并假设我应该将它们视为一个整数。是否有另一种方法可以查询这些结果以按
我是一名优秀的程序员,十分优秀!