小编use*_*820的帖子

当启用行级别安全性并且使用 NOT LEAKPROOF 运算符时,PostgreSQL 会忽略 pg_trgm GIN 索引

首先,这个SO问题描述了一个类似的问题:PostgreSQL query not using INDEX when RLS (Row Level Security) isenabled ,但我无法成功利用它的建议,还想看看是否有改进的方法Postgraphile 背景下的事物。

复制步骤:

作为超级用户,创建一个简单的表并用一些随机数据填充它:

CREATE TABLE public.videos AS SELECT id, md5(random()::text) AS title from generate_Series(1,1000000) id;
Run Code Online (Sandbox Code Playgroud)

执行 ILIKE 查询(在本文中,它被称为“ILIKE 查询”,用于多次测试性能):

EXPLAIN ANALYSE SELECT COUNT(*) FROM public.videos WHERE title ILIKE '%test%';
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,它执行了 Seq Scan,执行时间约为 194.823 ms

安装 gp_trgm 扩展并添加 gin 索引:

CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public;
CREATE INDEX trgm_idx_videos_title ON public.videos USING gin (title gin_trgm_ops);
Run Code Online (Sandbox Code Playgroud)

由于表已经填充了数据,因此创建索引需要一些时间(约 10 秒)。现在,运行相同的 ILIKE 查询将使用“trgm_idx_videos_title 上的位图索引扫描”,执行时间为 0.036 毫秒。

到目前为止一切似乎都很好,但前提是您可以始终使用超级用户来获取数据并且不为所述表实现额外的安全性。

让我们设置一个额外的用户并授予其连接到我们的数据库的权限(名为 …

postgresql indexing performance row-level-security postgraphile

8
推荐指数
1
解决办法
1024
查看次数

如何使用Word Automation在段落中添加下标字符?

我正在使用C#编写一个程序,该程序使用Microsoft Word 14.0对象库创建.doc文件,为其添加段落并保存.有一个小形式,带有描述动作的按钮(参见下面的代码).这部分没有问题.

问题:

创建的word文件中的当前文本将如下:

一些文本beff = 3.0

我需要完成的是创建一个段落,里面有下标字符.(在上面的段落中,字母"eff"应该是下标的):

在此输入图像描述

最终文档将包含大约100个像上面这样的行,下载不同的字符.

我找到了用线代替整个段落的方法,

paragraph1.Range.Font.Subscript = 1;
Run Code Online (Sandbox Code Playgroud)

但没有办法在单独的角色上实现它.

我也知道我可以使用Unicode中的下标字母和数字,但不幸的是,Unicode没有下标格式的完整字母,所以这也不是一个选项.

问题:我是否有办法完成目标并在新创建的Word文档中的段落中的下标中插入"eff"之类的内容?

示例代码:

private void btnReport_Click(object sender, EventArgs e)
    {

        Word._Application oWord;
        Word._Document oDoc;
        oWord = new Word.Application();
        oDoc = oWord.Documents.Add();


        var paragraph1 = oDoc.Content.Paragraphs.Add();
        paragraph1.Range.Text = "Some text   beff = 3.0";

        SaveFileDialog saveFileDialog1 = new SaveFileDialog();
        saveFileDialog1.Filter = "Word document|*.doc";
        saveFileDialog1.Title = "Save the Word Document";
        if (DialogResult.OK == saveFileDialog1.ShowDialog())
        {
            string docName = saveFileDialog1.FileName;
            if (docName.Length > 0)
            {
                object oDocName = (object)docName; …
Run Code Online (Sandbox Code Playgroud)

c# automation ms-word paragraph subscript

7
推荐指数
1
解决办法
5663
查看次数