Первичным индексом может быть CHAR в MySQL?

Мои первичные индексы являются уникальными ссылочными номерами как 002 345 и 000023.

Если я форматирую их как целые числа, я освобождаю свой нуль. Они должны быть 6 цифрами.

Я могу использовать CHAR? Мне не нужны никакие автоматические инкременты.

5
задан Peter Lang 23 May 2010 в 07:48
поделиться

3 ответа

Убедитесь, что оболочка должна проанализировать весь файл перед его выполнением:

#!/bin/ksh
{
all the original script here
}

Это делает трюк.

Между прочим, с Perl (и я предполагаю Python) программа анализирует весь файл перед его выполнением, точно так, как здесь рекомендуется. Вот почему вы обычно не сталкиваетесь с проблемой с Perl или Python.

-121--2938603-

Вас может заинтересовать большая (только OS X) категория NS (приписанная) последовательность + Geometrics Джерри Кринока, которая предназначена для выполнения всех видов измерений последовательностей, включая то, что вы ищете.

-121--1078070-

Да, можно использовать столбец CHAR в качестве первичного ключа в MySQL.

Однако вы должны рассмотреть возможность сохранения ваших номеров в виде целых чисел и применения первых 0 на уровне приложения.

Можно также рассмотреть возможность использования суррогатного ключа , не полученного из ссылочного номера или любых других данных приложения. Основным преимуществом будет то, что ваши записи не потеряют своего «дескриптора», если ссылочный номер заказа когда-либо изменится. Вы также получите дополнительную производительность целочисленного индекса в качестве положительного побочного эффекта.

6
ответ дан 14 December 2019 в 04:36
поделиться

Наконец-то нашел ответ: -) Я думаю, что не был так далеко в моей первой попытке. Вот оно: (написано для scala 2,8)

trait MatrixElement[T] {
    def +(that: T): T
    def *(that: T): T 
}

object MatrixElement {
    implicit def intToMatrixElement(x : Int) = new MatrixElement[Int] {
        def +(y : Int) = x + y
        def *(y : Int) = x * y
    }
    implicit def doubleToMatrixElement(x : Double) = new MatrixElement[Double] {
        def +(y : Double) = x + y
        def *(y : Double) = x * y
    }
    implicit def complexToMatrixElement(x : Complex) = new MatrixElement[Complex] {
        def +(y : Complex) = x + y
        def *(y : Complex) = x * y
    }
}

class Matrix[T  <% MatrixElement[T] : ClassManifest ](d: Array[Array[T]]) {
    def *(that: Matrix) = ..// code that uses "+" and "*" on the elements
}

Теперь я могу делать такие вещи, как:

scala> new Matrix(Array(Array(1,0),Array(0,1)))
res0: Matrix[Int] = 
1 0 
0 1 

scala> new Matrix(Array(Array(new Complex(0),new Complex(1)),Array(new Complex(1),new Complex(0))))
res9: Matrix[Complex] = 
(0.0,0.0i) (1.0,0.0i) 
(1.0,0.0i) (0.0,0.0i) 
-121--3950536-

Вы также можете проверить NPanday (это проект, в котором я участвую). Хотя ему все еще требуется определенная работа для более тесной увязки с передовым опытом Maven, он является наиболее полной и активной альтернативой, доступной в настоящее время. Одной из уникальных функций является наличие надстройки Visual Studio для создания правильного файла pom.xml из среды IDE.

-121--1649027-

Я только что протестировал на локальном MySQL - он работает отлично. Но для некоторого повышения производительности я бы пошел на целочисленный первичный индекс.

1
ответ дан 14 December 2019 в 04:36
поделиться

Вы можете использовать номера заказов в качестве первичного ключа. Но однажды ваш начальник позвонит вам и скажет, что номер заказа, отправленного вашему самому важному клиенту, был напечатан как 002346, а не 002345, и что они не могут получать платежи, пока эта ошибка не будет исправлена в вашей системе...

Вам также следует рассмотреть возможность использования целочисленного первичного ключа, так как это сэкономит место и соединения будут выполняться быстрее.

1
ответ дан 14 December 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: