Как автоматически игнорировать увеличение основного идентификатора при вставке myIsam?
Как решить эту проблему?
Это быстро увеличивает первичный идентификатор. Как решить это
МОЯ СТОЛОВАЯ СТРУКТУРА
| dates_tbl | CREATE TABLE `dates_tbl` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`date_raw` int(8) unsigned NOT NULL DEFAULT '0',
`date` date NOT NULL DEFAULT '0000-00-00',
`day` tinyint(2) unsigned NOT NULL DEFAULT '0',
`week` tinyint(2) unsigned NOT NULL DEFAULT '0',
`month` tinyint(2) unsigned NOT NULL DEFAULT '0',
`year` year(4) NOT NULL DEFAULT '0000',
`created_on` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `date_raw_unique` (`date_raw`),
KEY `date_raw` (`date_raw`),
KEY `month_year` (`month`,`year`),
KEY `year` (`year`)
) ENGINE=InnoDB AUTO_INCREMENT=21628 DEFAULT CHARSET=latin1 |
Вставить запрос
$q = "INSERT IGNORE INTO dates_tbl(date_raw,date,day,week,month,year,created_on)
values $dynamic_value";
РЕЗУЛЬТАТ
mysql> select id from dates_tbl limit 10;
+-------+
| id |
+-------+
| 19657 |
| 19681 |
| 19729 |
| 19777 |
| 19825 |
| 19873 |
| 19884 |
| 19913 |
| 19960 |
| 20007 |
+-------+
10 rows in set (0.01 sec)
id
это, вероятно, не имеет смысла. Вместо этого, продвигать date_raw
быть PRIMARY KEY
,PRIMARY KEY
это UNIQUE KEY
это KEY
,DATE
колонку, а затем, когда это необходимо, разберите ее на части.created_on
а также modified_on
? Или это артефакт какого-то стороннего программного обеспечения?DATE
затем используйте что-то вродеэтот:
WHERE ymd >= '2010-03-01'
AND ymd < '2010-03-01' + INTERVAL 1 MONTH
С этими изменениями вы удалили половину столбцов и большую часть индексов. И INSERT IGNORE
перестанет доставлять вам неприятности.
Если вы сохраните AUTO_INCREMENT
, тогда давайте посмотрим еще немного логики — нужно понять, почему IGNORE
вступает в силу. Решение может включать в себя некоторый другой код в дополнение к INSERT
,
Это часть звездообразной схемы в хранилище данных, поэтому я расскажу о том, как плохо нормализовать «непрерывные» значения, такие как DATE
, В этот момент вся таблица исчезает. И код будет работать быстрее!
Других решений пока нет …