小编Lio*_*nel的帖子

具有70%空值的列的索引:使用null或空值?

我们目前正在优化一个MySQL表(InnoDB),它甚至会有超过1亿行.

在一列中,我们存储IP地址(VARCHAR 45).我们需要在此列上放置一个索引,因为我们必须能够检索每个特定IP地址的所有行.

但是,所有行的70%不会存储IP地址().

我们的问题:我们应该将这些空值存储为NULL,从而在此列上允许NULL(将为每一行添加1个字节).或者我们不应该允许NULL并将那些空值存储为''(空字符串)

什么是最佳表现?

我们永远不必搜索空(='')或空(IS NULL)的行,只搜索特定的IP地址(='123.456.789.123').

更新:在SO上确实有很多问题可以解决类似的问题.然而,一些答案似乎是矛盾的或说"它取决于".我们将运行一些测试并在此处针对我们的具体方案发布我们的发现.

mysql indexing performance null

11
推荐指数
1
解决办法
2694
查看次数

PHP 7.1:是否有匹配“字符串”和“实现 __toString() 的对象”的本机接口?

我们有对象实现__toString()

class Foo {
    public function __toString()
    {
        return 'bar';
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我们有返回string或实现的对象的函数__toString(),就像上面的例子。

string对字符串使用返回类型当然有效:

function getString():string {
    return 'Works!';
}
Run Code Online (Sandbox Code Playgroud)

返回类型的对象Foo不起作用,因为它不是string

function getString(Foo $foo):string {
    return $foo; // Fatal TypeError!
}
Run Code Online (Sandbox Code Playgroud)

是否有任何 PHP 接口可以用来键入提示string和实现该未知接口的对象,例如Printableor Stringable(lol)?

目标是能够返回string实现特定接口的 或 对象(这将强制实现__toString)。

php interface type-hinting php-7

8
推荐指数
2
解决办法
1465
查看次数

仅限CSS:在整个文档中选择第一次出现的类

我们有这样的DOM:

<div class="outer">
    <div class="inner"> <!--// No "copyright" in this node //-->
        <div class="content">...</div>
    </div>
    <div class="inner">
        <div class="content">...</div>
        <div class="copyright">...</div> <!--// DISPLAY THIS ONE //-->
    </div>
    <div class="inner">
        <div class="content">...</div>
        <div class="content">...</div>
        <div class="content">...</div>
        <div class="copyright">...</div> <!--// Hide this one //-->
    </div>
    <div class="inner">
        <div class="content">...</div>
        <div class="content">...</div>
        <div class="copyright">...</div> <!--// Hide this one too, etc. //-->
    </div>
    <!--// etc. //-->
</div>
Run Code Online (Sandbox Code Playgroud)

必须隐藏所有具有"版权"类别的元素,但第一个元素除外.

我们尝试应用这种方法,但遗憾的是没有成功.它必须是仅CSS的解决方案.任何的想法?

谢谢你的帮助!

css css-selectors

5
推荐指数
1
解决办法
7822
查看次数

这个方法属于哪个类?

我对OOP很新,并且有一个普遍的问题.

想象一下,我有两个课程:AddressBookContact.地址簿包含0-n个联系人.

你会把方法放在哪里getAllContactsFromAddressBook()

class AddressBook {
    private $addressBookId;

    function __construct($addressBookId) {
         $this->addressBookId = $addressBookId;
    }

    // HERE?
    // getAllContactsFromAddressBook() { ... }
}
Run Code Online (Sandbox Code Playgroud)

class Contact {
    private $contactId;

    function __construct($contactId) {
         $this->contactId = $contactId;
    }

    function getContactDetails($contactId) { ... }

    // OR BETTER HERE?
    // getAllContactsFromAddressBook($addressBookId) { ... }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,最佳做法是什么?谢谢你的解释!

php oop

2
推荐指数
1
解决办法
89
查看次数

标签 统计

php ×2

css ×1

css-selectors ×1

indexing ×1

interface ×1

mysql ×1

null ×1

oop ×1

performance ×1

php-7 ×1

type-hinting ×1